Skip to content

Commit 7dbdd9f

Browse files
committed
fix(check-types): proper use of optional chaining; fixes #861
1 parent d11d271 commit 7dbdd9f

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

README.md

+12
Original file line numberDiff line numberDiff line change
@@ -5576,6 +5576,18 @@ function quux (foo) {
55765576
}
55775577
// Settings: {"jsdoc":{"mode":"typescript"}}
55785578
// Message: Invalid JSDoc @param "foo" type "object"; prefer: "Object<>".
5579+
5580+
/**
5581+
*
5582+
* @param {Object} param
5583+
* @return {Object | String}
5584+
*/
5585+
function abc(param) {
5586+
if (param.a)
5587+
return {};
5588+
return 'abc';
5589+
}
5590+
// Message: Invalid JSDoc @param "param" type "Object"; prefer: "object".
55795591
````
55805592

55815593
The following patterns are not considered problems:

src/rules/checkTypes.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ export default iterateJsdoc(({
206206
// `unifyParentAndChildTypeChecks`) and we don't want
207207
// `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555
208208
parentNode?.elements.length && (
209-
parentNode?.left.type === 'JsdocTypeName' &&
210-
parentNode?.left.value === 'Object'
209+
parentNode?.left?.type === 'JsdocTypeName' &&
210+
parentNode?.left?.value === 'Object'
211211
)
212212
)
213213
) {

test/rules/assertions/checkTypes.js

+40
Original file line numberDiff line numberDiff line change
@@ -2356,6 +2356,46 @@ export default {
23562356
},
23572357
},
23582358
},
2359+
{
2360+
code: `
2361+
/**
2362+
*
2363+
* @param {Object} param
2364+
* @return {Object | String}
2365+
*/
2366+
function abc(param) {
2367+
if (param.a)
2368+
return {};
2369+
return 'abc';
2370+
}
2371+
`,
2372+
errors: [
2373+
{
2374+
line: 4,
2375+
message: 'Invalid JSDoc @param "param" type "Object"; prefer: "object".',
2376+
},
2377+
{
2378+
line: 5,
2379+
message: 'Invalid JSDoc @return type "Object"; prefer: "object".',
2380+
},
2381+
{
2382+
line: 5,
2383+
message: 'Invalid JSDoc @return type "String"; prefer: "string".',
2384+
},
2385+
],
2386+
output: `
2387+
/**
2388+
*
2389+
* @param {object} param
2390+
* @return {Object | String}
2391+
*/
2392+
function abc(param) {
2393+
if (param.a)
2394+
return {};
2395+
return 'abc';
2396+
}
2397+
`,
2398+
},
23592399
],
23602400
valid: [
23612401
{

0 commit comments

Comments
 (0)