我正在使用vscode + typescript:
let o = {
a: 100
}
console.log(o.hasOwnProperty("a"));
如果创建了一个对象文字,我有一种期望,即hasOwnProperty()
或toString()
等方法出现在Intellisense预览中。但他们没有。
是否可以在Intellisense中显示这些方法?
答案 0 :(得分:0)
如果你不告诉TypeScript它试图从它知道的内容推断它们的对象类型。我们来看看您的示例代码:
let o = {
a: 100
}
当TypeScript看到这样的代码时,它会自动推断出如下所示的界面:
interface O {
a: number;
}
您获得的是,如果您输入o.a
,您会收到一条建议,告诉您o.a
的类型编号。现在,如果您想要访问hasOwnProperty
之类的方法,则必须在该接口上定义它们。 TypeScript附带了一个名为Object
的接口。
尝试以下方法:
interface O extends Object {
a: number;
}
var o: O = {
a: 100
};
现在,您拥有Object
接口定义的所有方法以及您自己的属性,例如本例中的a
。如果您只对[{1}}界面感兴趣,则不必定义新界面,只需使用它:
Object
但请注意,var o: Object = {
a: 100
};
在这种情况下并不能让编译器满意。
这应该可以让IntelliSense为您服务。 ;)