From 332b8f29b56f85c9a07135f292b4e8a3f45302ed Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Fri, 14 Sep 2018 10:47:13 -0700 Subject: [PATCH] Make && operator properly reflect falsy types from constraints --- src/compiler/checker.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6f541461b09..98266315fc1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -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) ||