From d7f8f0072e5ff8d6731f4f656f3319b4bd0d8e4f Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 4 Jul 2019 16:26:54 -1000 Subject: [PATCH] Include conditional types in top-level type parameter check --- src/compiler/checker.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 40b86ad679..9b540573c2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15208,7 +15208,11 @@ namespace ts { } function isTypeParameterAtTopLevel(type: Type, typeParameter: TypeParameter): boolean { - return type === typeParameter || !!(type.flags & TypeFlags.UnionOrIntersection) && some((type).types, t => isTypeParameterAtTopLevel(t, typeParameter)); + return !!(type === typeParameter || + type.flags & TypeFlags.UnionOrIntersection && some((type).types, t => isTypeParameterAtTopLevel(t, typeParameter)) || + type.flags & TypeFlags.Conditional && ( + isTypeParameterAtTopLevel(getTrueTypeFromConditionalType(type), typeParameter) || + isTypeParameterAtTopLevel(getFalseTypeFromConditionalType(type), typeParameter))); } /** Create an object with properties named in the string literal type. Every property has type `any` */