2017-08-01 36 views
0

TL; DR:有沒有一種方法可以爲vscode模塊之間傳遞的類型/變量啓用智能感知?如何在未定義類的模塊中獲取智能感知,只傳遞給?

在這種情況下,我有3個模塊/文件:


Test.js

// Test.js 
export default class Test { 
    constructor() { 
    this.whatever = { 
     a: "a", 
     b: "b" 
    }; 
    } 

    someFunc() { 
    console.log(this.whatever.b); 
    } 
} 

OtherTest.js

// OtherTest.js 
export default arg => { 
    arg.someFunc(); 
}; 

index.js

//index.js 
import Test from "./Test"; 
import OtherTest from "./OtherTest"; 
const test = new Test(); 
OtherTest(test); 

運行index.js中的代碼,控制檯打印'b',如預期的那樣。

使用vscode,編輯器如何能夠「知道」在OtherTest.js中傳遞給函數的變量類型,因此我可以讓所有Test類的成員在intellisense中彈出?

我想這應該是在vscode中完成的,因爲類型化參數沒有問題,但除了TypeScript之外,我不知道這不是一個選項。

回答

2

根據VS Code docs

默認情況下,JavaScript語言服務將分析並在你的JavaScript項目中的所有文件提供智能感知。

但是,您可以指定要在jsconfig.json中包含或排除的文件。

對於你的情況,我已經重新創建您的項目在VS代碼和它的工作很好地讓類型OtherTest型[圖片]的「亂用」的:

VS Code Intelisence

編輯:但我認爲,這個問題不在VS Code中,你想知道哪種類型的變量一般會起作用。

在這種情況下,你可以檢查出這些選項:

  1. 使用靜態類型語言,例如TypeScript
  2. 對Javascript使用靜態類型檢查器,例如流量
  3. 使用JSDoc
+0

噢,在index.js文件我從兩個導入的文件獲得智能,但我想從傳遞到OtherTest.js文件中的參數有智能感知:例如,我應該能夠從OtherTest.js中的arg參數中看到someFunc()方法。 –

+0

對不起,我已經更新了答案,不要從第一眼看到問題 – Dolf

+0

JSDoc!這是侵入性最小,最優雅的解決方案。它現在正在工作,只需要引用頂部的類型並在JSDoc中使用它。作品完美無瑕!謝謝! –

相關問題