【问题标题】:intellisense + hasOwnProperty in vscodevscode中的智能感知+hasOwnProperty
【发布时间】:2017-08-09 03:16:22
【问题描述】:

我正在使用 vscode + typescript:

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

如果创建了一个对象字面量,我期望像 hasOwnProperty()toString() 这样的方法会出现在 Intellisense 预览中。但他们没有。

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

【问题讨论】:

  • 你能发布你的 tsconfig.json 文件吗?

标签: typescript visual-studio-code


【解决方案1】:

如果你不告诉 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。如果您只对Object 接口感兴趣,您不必定义新接口,只需使用它:

var o: Object = {
  a: 100
};

但要注意o.a 在这种情况下不会让编译器满意。

这应该会让 IntelliSense 为您工作。 ;)

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 1970-01-01
    相关资源
    最近更新 更多