From a8bea77d1efe4984e573760770b78486a5488366 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Oct 2019 14:50:12 -0700 Subject: [PATCH] Backfill TypeReference.typeArguments in the API (#33714) --- src/services/services.ts | 9 +++++++++ src/services/types.ts | 4 ++++ tests/baselines/reference/api/tsserverlibrary.d.ts | 3 +++ tests/baselines/reference/api/typescript.d.ts | 3 +++ 4 files changed, 19 insertions(+) diff --git a/src/services/services.ts b/src/services/services.ts index 6a1c721cbba..acd06a8ac6d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -452,6 +452,15 @@ namespace ts { isClass(): this is InterfaceType { return !!(getObjectFlags(this) & ObjectFlags.Class); } + /** + * This polyfills `referenceType.typeArguments` for API consumers + */ + get typeArguments() { + if (getObjectFlags(this) & ObjectFlags.Reference) { + return this.checker.getTypeArguments(this as Type as TypeReference); + } + return undefined; + } } class SignatureObject implements Signature { diff --git a/src/services/types.ts b/src/services/types.ts index 65544d5677d..80a4c4c0650 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -68,6 +68,10 @@ namespace ts { isClass(): this is InterfaceType; } + export interface TypeReference { + typeArguments?: readonly Type[]; + } + export interface Signature { getDeclaration(): SignatureDeclaration; getTypeParameters(): TypeParameter[] | undefined; diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 5ad30ae8803..0a1c7230dc8 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -4902,6 +4902,9 @@ declare namespace ts { isClassOrInterface(): this is InterfaceType; isClass(): this is InterfaceType; } + interface TypeReference { + typeArguments?: readonly Type[]; + } interface Signature { getDeclaration(): SignatureDeclaration; getTypeParameters(): TypeParameter[] | undefined; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 7bf245876e5..932199e6e36 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -4902,6 +4902,9 @@ declare namespace ts { isClassOrInterface(): this is InterfaceType; isClass(): this is InterfaceType; } + interface TypeReference { + typeArguments?: readonly Type[]; + } interface Signature { getDeclaration(): SignatureDeclaration; getTypeParameters(): TypeParameter[] | undefined;