Resolve to type in true branch for 'never extends never'

This commit is contained in:
Anders Hejlsberg 2018-02-03 09:44:28 -08:00
parent 7034d671db
commit 7bb8cfe638

View File

@ -8169,7 +8169,7 @@ namespace ts {
combinedMapper = mapper ? combineTypeMappers(mapper, inferenceMapper) : inferenceMapper;
}
// Return union of trueType and falseType for any and never since they match anything
if (checkType.flags & (TypeFlags.Any | TypeFlags.Never)) {
if (checkType.flags & TypeFlags.Any || (checkType.flags & TypeFlags.Never && !(extendsType.flags & TypeFlags.Never))) {
return getUnionType([instantiateType(baseTrueType, combinedMapper || mapper), instantiateType(baseFalseType, mapper)]);
}
// Instantiate the extends type including inferences for 'infer T' type parameters