Merge pull request #32260 from microsoft/fix32169

Include conditional types in top-level type parameter check
This commit is contained in:
Anders Hejlsberg
2019-07-09 10:30:44 -07:00
committed by GitHub
5 changed files with 78 additions and 1 deletions

View File

@@ -15286,7 +15286,11 @@ namespace ts {
}
function isTypeParameterAtTopLevel(type: Type, typeParameter: TypeParameter): boolean {
return type === typeParameter || !!(type.flags & TypeFlags.UnionOrIntersection) && some((<UnionOrIntersectionType>type).types, t => isTypeParameterAtTopLevel(t, typeParameter));
return !!(type === typeParameter ||
type.flags & TypeFlags.UnionOrIntersection && some((<UnionOrIntersectionType>type).types, t => isTypeParameterAtTopLevel(t, typeParameter)) ||
type.flags & TypeFlags.Conditional && (
isTypeParameterAtTopLevel(getTrueTypeFromConditionalType(<ConditionalType>type), typeParameter) ||
isTypeParameterAtTopLevel(getFalseTypeFromConditionalType(<ConditionalType>type), typeParameter)));
}
/** Create an object with properties named in the string literal type. Every property has type `any` */