使用Typescript编译器分析javascript文件

时间:2019-05-12 13:47:43

标签: javascript typescript typescript-compiler-api

参考: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是错误的。

1 个答案:

答案 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。