From 69580c4561b75db1cf8eae53593abe4d27189f2c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 28 Feb 2018 16:57:25 -0800 Subject: [PATCH] Filter outer type parameters (similar to anonymous types) --- src/compiler/checker.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0be1c8438b4..520b477da0b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8278,7 +8278,9 @@ namespace ts { const links = getNodeLinks(node); if (!links.resolvedType) { const checkType = getTypeFromTypeNode(node.checkType); - const outerTypeParameters = getOuterTypeParameters(node, /*includeThisTypes*/ true); + const aliasTypeArguments = getAliasTypeArgumentsForTypeNode(node); + const allOuterTypeParameters = getOuterTypeParameters(node, /*includeThisTypes*/ true); + const outerTypeParameters = aliasTypeArguments ? allOuterTypeParameters : filter(allOuterTypeParameters, tp => isTypeParameterPossiblyReferenced(tp, node)); const root: ConditionalRoot = { node, checkType, @@ -8290,7 +8292,7 @@ namespace ts { outerTypeParameters, instantiations: undefined, aliasSymbol: getAliasSymbolForTypeNode(node), - aliasTypeArguments: getAliasTypeArgumentsForTypeNode(node) + aliasTypeArguments }; links.resolvedType = getConditionalType(root, /*mapper*/ undefined); if (outerTypeParameters) {