我试图使用燕鸥对某些Javascript代码执行类型推断。但是,类型推断似乎并没有在代码旁边使用JSDoc注释。
我使用代码/** @type {Foo} */ let x;作为这个问题的一个例子。在Tern网站演示页面 (使用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类型优于通常推断的类型,但没有效果。
有什么办法让这件事起作用吗?
发布于 2017-09-02 13:15:17
事实证明,您必须导入doc_comment插件才能使用它。否则,设置tern服务器的插件选项不会做任何事情。
简单地将require("tern/plugin/doc_comment");添加到文件的顶部解决了这个问题。
https://stackoverflow.com/questions/46009759
复制相似问题