【问题标题】:Tern Fails to use JSDoc Type InformationTern 无法使用 JSDoc 类型信息
【发布时间】:2017-09-02 01:47:14
【问题描述】:

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

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

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

这是一个复制问题的 sn-p:

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 cmets 时,它似乎不适用于我初始化和调用它的方式。

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

任何想法如何让它工作?

【问题讨论】:

    标签: javascript parsing type-inference jsdoc tern


    【解决方案1】:

    事实证明,您必须导入 doc_comment 插件才能使用它。否则,为 tern 服务器设置 plugins 选项将无济于事。

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

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      相关资源
      最近更新 更多