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");
添加到文件顶部即可解决问题。
我正在尝试使用 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");
添加到文件顶部即可解决问题。