Properly handle 'any' and 'never' as conditional check type

This commit is contained in:
Anders Hejlsberg
2018-01-15 15:31:43 -08:00
parent 15baf0ead5
commit 9598acd477

View File

@@ -8415,6 +8415,10 @@ namespace ts {
if (checkType.flags & TypeFlags.Union) {
return getUnionType(map((<UnionType>checkType).types, t => getConditionalType(t, extendsType, mapper, trueType, falseType)));
}
// Return union of trueType and falseType for any and never since they match anything
if (checkType.flags & (TypeFlags.Any | TypeFlags.Never)) {
return getUnionType([instantiateType(trueType, mapper), instantiateType(falseType, mapper)]);
}
// Return trueType for a definitely true extends check
if (isTypeAssignableTo(checkType, extendsType)) {
return instantiateType(trueType, mapper);