vscode中的intellisense + hasOwnProperty

时间:2017-08-08 16:04:03

标签: typescript visual-studio-code

我正在使用vscode + typescript:

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

如果创建了一个对象文字,我有一种期望,即hasOwnProperty()toString()等方法出现在Intellisense预览中。但他们没有。

是否可以在Intellisense中显示这些方法?

1 个答案:

答案 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为您服务。 ;)