Avoid incorrect narrowings using const variables from binding elemens with literal initializers (#56347)

This commit is contained in:
Mateusz Burzyński
2023-11-21 12:24:02 -08:00
committed by GitHub
parent d845ee2b6a
commit 2c0c128e98
4 changed files with 66 additions and 1 deletions
+2 -1
View File
@@ -26214,7 +26214,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
if (hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node)) {
const initializer = getEffectiveInitializer(declaration);
if (initializer) {
return tryGetNameFromType(getTypeOfExpression(initializer));
const initializerType = isBindingPattern(declaration.parent) ? getTypeForBindingElement(declaration as BindingElement) : getTypeOfExpression(initializer);
return initializerType && tryGetNameFromType(initializerType);
}
if (isEnumMember(declaration)) {
return getTextOfPropertyName(declaration.name);