2017-08-08 308 views
0

我使用vscode +打字稿:智能感知+ hasOwnProperty在vscode

let o = { 
    a: 100 
} 
console.log(o.hasOwnProperty("a")); 

如果創建文本對象,我有期望,像hasOwnProperty()toString()方法出現在智能感知預覽。但他們沒有。

是否可以在Intellisense中顯示這些方法?

+0

你可以發佈你的tsconfig.json文件嗎? –

回答

0

如果您不告訴TypeScript它嘗試從它所知道的對象中推斷出它們的類型。讓我們看看你的示例代碼:

let o = { 
    a: 100 
} 

當打字稿看到這樣的代碼,它會自動推斷,看起來像這樣的接口:

interface O { 
    a: number; 
} 

你獲得什麼,如果你鍵入o.a你一個建議告訴你,o.a是數字類型。現在,如果您想訪問hasOwnProperty等方法,則必須在該界面上定義它們。 TypeScript帶有一個稱爲Object的接口。

嘗試以下操作:

interface O extends Object { 
    a: number; 
} 

var o: O = { 
    a: 100 
}; 

現在你有被Object接口以及自己的屬性,如在這個例子中a定義的所有方法。如果你在Object接口只是有興趣,你不必定義一個新的接口,但是簡單地使用它:

var o: Object = { 
    a: 100 
}; 

但要注意的是o.a在這種情況下不會使編譯器高興。

這應該會使IntelliSense爲您工作。 ;)