diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0d92cbe6531ef..cb43388b2dd00 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -18613,7 +18613,7 @@ namespace ts { case SyntaxKind.ParenthesizedExpression: { // Like in `checkParenthesizedExpression`, an `/** @type {xyz} */` comment before a parenthesized expression acts as a type cast. const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : undefined; - return tag ? getTypeFromTypeNode(tag.typeExpression!.type) : getContextualType(parent, contextFlags); + return tag ? getTypeFromTypeNode(tag.typeExpression.type) : getContextualType(parent, contextFlags); } case SyntaxKind.JsxExpression: return getContextualTypeForJsxExpression(parent); @@ -24231,7 +24231,7 @@ namespace ts { function checkParenthesizedExpression(node: ParenthesizedExpression, checkMode?: CheckMode): Type { const tag = isInJSFile(node) ? getJSDocTypeTag(node) : undefined; if (tag) { - return checkAssertionWorker(tag, tag.typeExpression!.type, node.expression, checkMode); + return checkAssertionWorker(tag, tag.typeExpression.type, node.expression, checkMode); } return checkExpression(node.expression, checkMode); } diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 3742f2d5fdf11..f562a6b5d12be 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2189,7 +2189,7 @@ namespace ts { } /* @internal */ - export function createJSDocTypeTag(typeExpression?: JSDocTypeExpression, comment?: string): JSDocTypeTag { + export function createJSDocTypeTag(typeExpression: JSDocTypeExpression, comment?: string): JSDocTypeTag { const tag = createJSDocTag(SyntaxKind.JSDocTypeTag, "type"); tag.typeExpression = typeExpression; tag.comment = comment; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 0d130c6de6506..a86dba52c87af 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6855,7 +6855,7 @@ namespace ts { } function parseReturnTag(start: number, tagName: Identifier): JSDocReturnTag { - if (forEach(tags, t => t.kind === SyntaxKind.JSDocReturnTag)) { + if (some(tags, isJSDocReturnTag)) { parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText); } @@ -6866,7 +6866,7 @@ namespace ts { } function parseTypeTag(start: number, tagName: Identifier): JSDocTypeTag { - if (forEach(tags, t => t.kind === SyntaxKind.JSDocTypeTag)) { + if (some(tags, isJSDocTypeTag)) { parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index e141e2b9daa82..5e2d6aba474ee 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2482,7 +2482,7 @@ namespace ts { export interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 8016b0e9ff655..f14a3a1e5d528 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -134,7 +134,7 @@ namespace ts.JsDoc { case SyntaxKind.JSDocTemplateTag: return withList((tag as JSDocTemplateTag).typeParameters); case SyntaxKind.JSDocTypeTag: - return withNode((tag as JSDocTypeTag).typeExpression!); + return withNode((tag as JSDocTypeTag).typeExpression); case SyntaxKind.JSDocTypedefTag: case SyntaxKind.JSDocCallbackTag: case SyntaxKind.JSDocPropertyTag: diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index d09582078be43..fb95102e79126 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1603,7 +1603,7 @@ declare namespace ts { } interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { parent: JSDoc; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 817276dc5c5c6..170cb00b9e879 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1603,7 +1603,7 @@ declare namespace ts { } interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { parent: JSDoc;