diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 86869ef027..26cc043a77 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -382,6 +382,7 @@ namespace ts { getReturnTypeOfSignature, getNullableType, getNonNullableType, + getTypeArguments, typeToTypeNode: nodeBuilder.typeToTypeNode, indexInfoToIndexSignatureDeclaration: nodeBuilder.indexInfoToIndexSignatureDeclaration, signatureToSignatureDeclaration: nodeBuilder.signatureToSignatureDeclaration, diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 7923a96e46..0388c3d1ec 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3191,6 +3191,7 @@ namespace ts { /* @internal */ getParameterType(signature: Signature, parameterIndex: number): Type; getNullableType(type: Type, flags: TypeFlags): Type; getNonNullableType(type: Type): Type; + getTypeArguments(type: TypeReference): readonly Type[]; // TODO: GH#18217 `xToDeclaration` calls are frequently asserted as defined. /** Note that the resulting nodes cannot be checked. */ diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 5dd3478288..555c913957 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -993,8 +993,8 @@ namespace ts.codefix { } else if (getObjectFlags(genericType) & ObjectFlags.Reference && getObjectFlags(usageType) & ObjectFlags.Reference) { // this is wrong because we need a reference to the targetType to, so we can check that it's also a reference - const genericArgs = (genericType as TypeReference).typeArguments; - const usageArgs = (usageType as TypeReference).typeArguments; + const genericArgs = checker.getTypeArguments(genericType as TypeReference); + const usageArgs = checker.getTypeArguments(usageType as TypeReference); const types = []; if (genericArgs && usageArgs) { for (let i = 0; i < genericArgs.length; i++) {