From 9598acd47702e2e8dee9a43d696d88b2730a2c6b Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jan 2018 15:31:43 -0800 Subject: [PATCH] Properly handle 'any' and 'never' as conditional check type --- src/compiler/checker.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 41717d4f0f7..6abe6ad04b0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8415,6 +8415,10 @@ namespace ts { if (checkType.flags & TypeFlags.Union) { return getUnionType(map((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);