diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5ca986a2bf1..e15b57fbc2d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10666,16 +10666,6 @@ namespace ts { type; } - function getWidenedLiteralLikeType(type: Type): Type { - return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLiteral && type.flags & TypeFlags.FreshLiteral ? stringType : - type.flags & TypeFlags.NumberLiteral && type.flags & TypeFlags.FreshLiteral ? numberType : - type.flags & TypeFlags.BooleanLiteral ? booleanType : - type.flags & TypeFlags.UniqueESSymbol ? esSymbolType : - type.flags & TypeFlags.Union ? getUnionType(sameMap((type).types, getWidenedLiteralLikeType)) : - type; - } - function getWidenedLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : type.flags & TypeFlags.StringLiteral && type.flags & TypeFlags.FreshLiteral ? stringType : @@ -10692,12 +10682,13 @@ namespace ts { } function getWidenedLiteralLikeTypeForContextualType(type: Type, contextualType: Type) { - const widenLiterals = !isLiteralContextualType(contextualType); - const widenSymbols = !isUniqueESSymbolContextualType(contextualType); - return widenLiterals && widenSymbols ? getWidenedLiteralLikeType(type) : - widenLiterals ? getWidenedLiteralType(type) : - widenSymbols ? getWidenedUniqueESSymbolType(type) : - type; + if (!isLiteralContextualType(contextualType)) { + type = getWidenedLiteralType(type); + } + if (!isUniqueESSymbolContextualType(contextualType)) { + type = getWidenedUniqueESSymbolType(type); + } + return type; } /**