我有一个角度资源接口,我想扩展它以从后端获取对象结构。它适用于除字典之外的任何接口类型:
export interface MyInterface extends angular.resource.IResource<any> {
[key: string]: MyAnotherInterface;
}
Typescript编译器给出了一个错误,即找不到angular.resource.IResource
的所有属性,因为据我所知,另一个声明[key: string]: MyAnotherInterface;
会覆盖可扩展单元的所有属性。所以,据我所知,问题是字典声明非常严格,并且不允许同一界面上的其他属性。
我无法改变服务器返回的结构(仅仅因为TS而改变它是愚蠢的);同时我真的希望每次(<any>MyInterface).myProperty
都避免写作 - 这真的很有气味。
TypeScript版本:1.7.5
如何解决问题?
答案 0 :(得分:1)
所以,据我所知,问题是字典声明非常严格,并且不允许同一界面上的其他属性
是。您不能拥有string
的字典索引,其中某些属性不符合常规结构(您的MyAnotherInterface
)。
我无法改变服务器返回的结构(仅仅因为TS而改变它是愚蠢的);
您可以这样做:
export interface MyInterface extends angular.resource.IResource<any> {
get(key:string): MyAnotherInterface;
}
然后将get
函数简单地添加为(instance as any).get = (x:string)=>this[x];