TypeScript 编译器 API 中符号和节点的区别

ple*_*ock 13 typescript typescript-compiler-api

有人可以清楚地定义什么是 TypeScript 编译器 API 中的 Symbol 和 Node,编译器何时以及如何使用它们以及 API 用户的常见用法示例。

也很高兴知道对象何时包含.symbol、何时包含、.aliasSymbol为何包含以及有何不同。(我问的原因是因为有时我在 中找到我需要的东西.aliasSymbol,有时只是在.symbol.

Roy*_*ham 10

Nodes 是抽象语法树的一部分;这些纯粹是基于编译文件中文本的语法结构,没有尝试在顶部分层类型信息。

Symbols 是 TS 编译器开始在上面放置一些更多语义构造的地方,并且您开始获取类型信息。

如果你手里有 ,TypeChecker你可以通过 AST 世界跳转到类型/符号世界checker.getTypeAtLocation(node)

“TypeScript Deep Dive”网站上有一些关于此的更多有用信息:https://basarat.gitbook.io/typescript/overview