2017-09-02 79 views
0

我試圖使用Tern對某些Javascript代碼執行類型推斷。但是,類型推斷似乎並沒有在代碼中使用JSDoc註釋。Tern無法使用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); 

燕鷗以其他方式工作了類型推斷完美的罰款。這是使用JSDoc註釋的時候,它似乎沒有用我初始化和調用它的方式工作。

我甚至將doc_comment插件設置爲strong,這意味着JSDoc類型比通常推斷的類型更受歡迎,但無濟於事。

任何想法如何讓這個工作?

回答

0

事實證明,您必須導入doc_comment插件才能使用它。否則,爲tern服務器設置插件選項將不會執行任何操作。

只需將require("tern/plugin/doc_comment");添加到文件頂部即可解決問題。