File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -8791,6 +8791,10 @@ namespace ts {
87918791 assumeTrue ? TypeFacts.EQUndefined : TypeFacts.NEUndefined;
87928792 return getTypeWithFacts(type, facts);
87938793 }
8794+ if (type.flags & TypeFlags.String && isTypeOfKind(valueType, TypeFlags.StringLiteral) ||
8795+ type.flags & TypeFlags.Number && isTypeOfKind(valueType, TypeFlags.NumberLiteral)) {
8796+ return assumeTrue? valueType : type;
8797+ }
87948798 if (type.flags & TypeFlags.NotUnionOrUnit) {
87958799 return type;
87968800 }
@@ -8843,7 +8847,11 @@ namespace ts {
88438847 const clauseTypes = switchTypes.slice(clauseStart, clauseEnd);
88448848 const hasDefaultClause = clauseStart === clauseEnd || contains(clauseTypes, neverType);
88458849 const discriminantType = getUnionType(clauseTypes);
8846- const caseType = discriminantType.flags & TypeFlags.Never ? neverType : filterType(type, t => isTypeComparableTo(discriminantType, t));
8850+ const caseType =
8851+ discriminantType.flags & TypeFlags.Never ? neverType :
8852+ type.flags & TypeFlags.String && isTypeOfKind(discriminantType, TypeFlags.StringLiteral) ? discriminantType :
8853+ type.flags & TypeFlags.Number && isTypeOfKind(discriminantType, TypeFlags.NumberLiteral) ? discriminantType :
8854+ filterType(type, t => isTypeComparableTo(discriminantType, t));
88478855 if (!hasDefaultClause) {
88488856 return caseType;
88498857 }
You can’t perform that action at this time.
0 commit comments