参考:https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API,我想在AST中获取节点类型。
angular
项目成功,因为它是使用打字稿编写的,并且tsconfig.json
存在。
当我尝试分析使用JavaScript编写的react app
const program = ts.createProgram({
rootNames: [fileName],
options: {
strict: true,
target: ts.ScriptTarget.ES2015,
allowJs: true,
checkJs: true
}
})
const typeChecker = program.getTypeChecker();
... ...
我得到:typechecker.getTypeAtLocation(node).getSymbol()
是undefined
。
我认为options
中的ts.createProgram
是错误的。
答案 0 :(得分:0)
选项:moduleResolution: ts.ModuleResolutionKind.NodeJs
是关键。
const program = ts.createProgram({
rootNames: [file1],
options: {
strict: true,
target: ts.ScriptTarget.ES2015,
allowJs: true,
checkJs: true,
moduleResolution: ts.ModuleResolutionKind.NodeJs
}
})
以上内容适用于React JS。