2017-08-08 140 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为您工作。 ;)