ben*_*inz 7 typescript typescript-compiler-api
我正在尝试使用 TypeScript 的编译器 API 来执行非常基本的类型推断,但我无法从文档或谷歌搜索中找到任何有用的信息。
本质上,我想要一个函数inferType
,它接受一个变量并返回它的推断定义:
let bar = [1, 2, 3];
let bar2 = 5;
function foo(a: number[], b: number) {
return a[0] + b;
}
inferType(bar); // => "number[]"
inferType(bar2); // => "number"
inferType(foo); // "(number[], number) => number"
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以通过编译器 API 实现这一点吗?如果没有,无论如何我可以通过其他方式实现这一目标吗?
您可以使用我的 TypeScript Compiler API Playground 示例 LanguageService 类型检查示例:https : //typescript-api-playground.glitch.me/#example=ts-type-checking-source
这也是 node.js 脚本,它解析输入的打字稿代码,并根据它的使用方式推断任何符号的类型。它使用 TypeScript Compiler API ,创建一个 Program,然后魔术就是“program.getTypeChecker().getTypeAtLocation(someNode)”
工作示例:https : //github.com/cancerberoSgx/typescript-plugins-of-mine/blob/master/typescript-ast-util/spec/inferTypeSpec.ts
如果您不熟悉 Compiler API,请从这里开始。此外,您还有几个项目可以让它变得更容易:
祝你好运
无论如何我可以通过编译器 API 实现这一点
当代码是字符串时,编译器 API 可以让您检查代码。例如
const someObj = ts.someApi(`
// Code
let bar = [1, 2, 3];
let bar2 = 5;
function foo(a: number[], b: number) {
return a[0] + b;
}
`);
// use someObj to infer things about the code
Run Code Online (Sandbox Code Playgroud)
如果没有,我是否可以通过其他方式实现这一目标?
typeof
尽管其用途受到很大限制。
或者使用nodejs加载自__filename
代码(仅在节点中工作,并且仅在运行思想ts-node
即原始TS时): https: //nodejs.org/api/globals.html#globals_filename。
归档时间: |
|
查看次数: |
2099 次 |
最近记录: |