2017-06-22 4 views
0

私はVSコードのIntellisenseがTypeScriptコンパイラによって強化されていることを認識していますが、TypeScriptは書かれていません。VSCode intellisense - クラスインスタンスの配列

とにかくVSコードintellisenseはES6クラスではうまくいきますが、クラスの配列がある場所ではどこからでも離れています。私はこれがコンパイラ能力の領域外にあると言っているが、コンパイラが配列に格納されているオブジェクトの型を推論するためのコードを書く方法はあるのだろうか?明らかに、彼らが何かになる可能性があるという最高の推測。

ここに私の言いたいことを示すコードがあります。上記のコードで

class JSONPayloadApi { 
    constructor(payload) { 
     this.apiName = payload.ApiName; 
     this.apiRoot = payload.ApiRoot; 
     this.apiTkn = payload.ApiTkn; 
    } 
} 

class JSONPayload { 
    constructor(value) { 
     const payload = JSON.parse(value); 

     this.apis = payload.Apis.map((x) => new JSONPayloadApi(x)); 
    } 
} 

// Pretend ive already created an instance of JSONPayload 
const api = jsonPayLoad.apis[0]; 

VSコードがそのapiJSONPayloadApiのInfactはインスタンスであることを推測し、それに応じてインテリセンスを提供することが全く可能ですか?

もっと知っていると思いますが、インテリセンスの意味を破壊してしまったことを、私たちが実際に追加した後に追加できるようになりました。配列が原因で凍結されていない限り。

これはミッションクリティカルなものではなく、VSコードのインテリセンス能力の好奇心だけです。

答えて

0

あなたのjavascriptコードで@ ts-checkコメントを使うことができます。推測されない型に対しては、jsdocコメントを提供する必要があります。 Like:

// @ts-check 
let easy = 'abc' 
easy = 123 // Error: Type '123' is not assignable to type 'string' 

提供されているタイスクリプトと言語サービスがコンパイル時にのみ機能していることを決して忘れないでください。 javascriptの動的な性質のため、実行時にデータを「破損」することには何の制限もありません。

+0

'ts-check'コメントは、' jsDoc'コメントが直接に働いているので、不要です。 – ste2425

関連する問題