Disabled 'used before initialization' error for optional properties (#43100)

* Disabled 'used before initialization' error for optional properties

* Expanded tests to include code snippet from issue
This commit is contained in:
Josh Goldberg
2021-04-02 13:08:10 -04:00
committed by GitHub
parent f9b35cd302
commit 38da7c600c
6 changed files with 121 additions and 38 deletions

View File

@@ -11936,6 +11936,10 @@ namespace ts {
return false;
}
function isOptionalPropertyDeclaration(node: Declaration) {
return isPropertyDeclaration(node) && node.questionToken;
}
function isOptionalJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag {
if (!isJSDocPropertyLikeTag(node)) {
return false;
@@ -27115,6 +27119,7 @@ namespace ts {
let diagnosticMessage;
const declarationName = idText(right);
if (isInPropertyInitializer(node)
&& !isOptionalPropertyDeclaration(valueDeclaration)
&& !(isAccessExpression(node) && isAccessExpression(node.expression))
&& !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)
&& (compilerOptions.useDefineForClassFields || !isPropertyDeclaredInAncestorClass(prop))) {