【问题标题】:How can I use the TypeScript Compiler API to extract the type of an array如何使用 TypeScript Compiler API 来提取数组的类型
【发布时间】:2020-06-21 22:22:57
【问题描述】:

如何使用 TypeScript Compiler API 来提取数组的类型?例如给定这个来源:

let a: string[] = []

我怎样才能从string[] 类型变成string

ts-morph 让这一切变得简单,但我还没有弄清楚如何使用原始 TS Compiler API 复制它。

看来我需要使用checker.getTypeArguments(),但它需要一个我不知道如何创建的ts.TypeReference 类型。

【问题讨论】:

标签: typescript typescript-compiler-api


【解决方案1】:

string[] 等数组类型将采用以下形式:

Array<string>

如果您有其中一种类型,您可以将其声明为 ts.TypeReference 并将其传递给 TypeChecker#getTypeArguments

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

要检查一个类型是否是数组类型,我通常只检查类型的符号名称是否为Array,以及它是否有一个类型参数。

【讨论】:

  • 谢谢大卫,我没有想到的是类型转换。难道没有别的办法了吗?你是怎么想出来的?是否期望 API 用户应该像这样直观地使用,或者您是否通过例如通过 gitter 等与核心团队交谈?
猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多