Tern 无法使用 JSDoc 类型信息

Tern Fails to use JSDoc Type Information

我正在尝试使用 Tern 对某些 Javascript 代码执行类型推断。但是,类型推断似乎并没有在代码旁边使用 JSDoc 注释。

我使用代码 /** @type {Foo} */ let x; 作为问题的示例。在 Tern website's demo page(使用 CodeMirror)上,编辑器能够推断出 x 的类型是 Foo.

然而,当 运行 在本地通过节点时,我得到了这个:{ type: '?', exprName: 'x' }.

这是一个重复问题的片段:

const tern = require('tern');

const ternServer = new tern.Server({
    plugins: {
        doc_comment: {
            strong: true
        }
    }
});

const js = `/** @type {Foo} */ let x;`;
ternServer.addFile("main", js);
ternServer.request({
    query: {
        type: "type",
        file: "main",
        start: js.length - 2,
        end: js.length - 2
    }
}, console.log);

Tern 在类型推断方面一直工作得很好。在使用 JSDoc 注释时,它似乎无法按照我初始化和调用它的方式工作。

我什至将 doc_comment 插件设置为 strong,这意味着 JSDoc 类型优于通常推断的类型,但无济于事。

有什么想法可以让它发挥作用吗?

事实证明,您必须导入 doc_comment 插件才能使用它。否则,为 tern 服务器设置插件选项将不会执行任何操作。

只需将 require("tern/plugin/doc_comment"); 添加到文件顶部即可解决问题。