Make && operator properly reflect falsy types from constraints

This commit is contained in:
Anders Hejlsberg
2018-09-14 10:47:13 -07:00
parent 932e14e661
commit 332b8f29b5

View File

@@ -12838,7 +12838,8 @@ namespace ts {
}
function getDefinitelyFalsyPartOfType(type: Type): Type {
return type.flags & TypeFlags.String ? emptyStringType :
return type.flags & TypeFlags.Instantiable ? extractDefinitelyFalsyTypes(getBaseConstraintOfType(type) || unknownType) :
type.flags & TypeFlags.String ? emptyStringType :
type.flags & TypeFlags.Number ? zeroType :
type.flags & TypeFlags.Boolean || type === falseType ? falseType :
type.flags & (TypeFlags.Void | TypeFlags.Undefined | TypeFlags.Null) ||