From 8a28e151460df8e26ad161e61637c8dfbca2a847 Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 31 May 2017 12:05:31 -0700 Subject: [PATCH] Get jsDoctype for property assignment --- src/compiler/checker.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c5afb367cf4..87aa6dc8d3c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13273,6 +13273,7 @@ namespace ts { let patternWithComputedProperties = false; let hasComputedStringProperty = false; let hasComputedNumberProperty = false; + const isInJSFile = isInJavaScriptFile(node); let offset = 0; for (let i = 0; i < node.properties.length; i++) { @@ -13281,6 +13282,11 @@ namespace ts { if (memberDecl.kind === SyntaxKind.PropertyAssignment || memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment || isObjectLiteralMethod(memberDecl)) { + let jsdocType: Type; + if (isInJSFile) { + jsdocType = getTypeForDeclarationFromJSDocComment(memberDecl); + } + let type: Type; if (memberDecl.kind === SyntaxKind.PropertyAssignment) { type = checkPropertyAssignment(memberDecl, checkMode); @@ -13293,6 +13299,11 @@ namespace ts { type = checkExpressionForMutableLocation((memberDecl).name, checkMode); } + if (jsdocType) { + checkTypeAssignableTo(type, jsdocType, memberDecl); + type = jsdocType; + } + typeFlags |= type.flags; const prop = createSymbol(SymbolFlags.Property | member.flags, member.name); if (inDestructuringPattern) {