File tree 1 file changed +9
-1
lines changed
1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -8791,6 +8791,10 @@ namespace ts {
8791
8791
assumeTrue ? TypeFacts.EQUndefined : TypeFacts.NEUndefined;
8792
8792
return getTypeWithFacts(type, facts);
8793
8793
}
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
+ }
8794
8798
if (type.flags & TypeFlags.NotUnionOrUnit) {
8795
8799
return type;
8796
8800
}
@@ -8843,7 +8847,11 @@ namespace ts {
8843
8847
const clauseTypes = switchTypes.slice(clauseStart, clauseEnd);
8844
8848
const hasDefaultClause = clauseStart === clauseEnd || contains(clauseTypes, neverType);
8845
8849
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));
8847
8855
if (!hasDefaultClause) {
8848
8856
return caseType;
8849
8857
}
You can’t perform that action at this time.
0 commit comments