在Typescript中,当使用索引器时,我无法使我的接口扩展Object(键作为字符串) .
如果我不扩展Object然后它工作正常,但intellisense不提供Object.hasOwnProperty()方法的建议 .
interface MyObject extends Object {
[key: string] : string;
}
在上面的代码中,我得到编译时错误:“类型为'(v:string)=> boolean'的属性'hasOwnProperty'不能赋予字符串索引类型'string' . ”
稍后在代码中我想使用MyObject类型的变量来检查它是否包含使用Object的hasOwnProperty方法的特定键 .
1 回答
您无需扩展
Object
即可拥有hasOwnProperty
方法 . 由于所有对象都继承Object
,因此该方法将存在于任何接口实例上 .索引签名通常意味着接口的所有成员都将与索引的返回类型兼容 . 你可以使用union类型解决这个问题,但是如果没有
Object.assign
,你仍然无法直接创建这样的对象: