Как я могу использовать API-интерфейс компилятора TypeScript для извлечения типа массива - PullRequest
2 голосов
/ 10 марта 2020

Как я могу использовать API-интерфейс компилятора TypeScript для извлечения типа массива? Например, учитывая этот источник:

let a: string[] = []

Как я могу go получить от типа string[] до string?

ts-morph make это просто, но я не понял, как его скопировать с помощью API-интерфейса TS Compiler.

Кажется, мне нужно использовать checker.getTypeArguments(), но он хочет тип ts.TypeReference, которого я не знаю как создать.

1 Ответ

1 голос
/ 10 марта 2020

Тип массива, такой как string[], будет иметь вид:

Array<string>

Если у вас есть один из этих типов, вы можете просто установить его как ts.TypeReference и передать его в TypeChecker#getTypeArguments:

const typeArgs = typeChecker.getTypeArguments(arrayType as ts.TypeReference);
const elementType = typeArgs[0];

Чтобы проверить, является ли тип типом массива, я обычно просто проверяю имя символа типа для Array и имеет ли он единственный аргумент типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...