2016-01-23 56 views
2

我试图对其中一个接口进行扩展,但不断发生错误“索引签名在类型{dcs:Relationship}中缺少以下代码片段:Typescript:当扩展接口时缺少索引签名类型

interface Relationship { 
    data: { 
     id: string; 
     type: string; 
    } 
} 

interface T { 
    relationships: {[key: string]: Relationship}; 
} 

interface Test extends T { 
    relationships: { 
     dcs: Relationship; 
    }; 
} 

的目标是在T的关系属性可与任何数量都是关系型的键的对象。测试应该是一个具体的实施类型T的

不确定要采取的方法是正确的。提前致谢!

回答

0

声明Test像这样:

interface Test extends T { 
    relationships: { 
    [key: string]: Relationship; 
    dcs: Relationship; 
    }; 
} 

但是,因为你已经注意到了,你最终不得不再次申报索引当你真正实现的接口。通过这样做可以节省一些打字量:

interface T { 
    relationships: { 
    [key: string]: Relationship; 
    }; 
} 

interface TestRelationships { 
    [key: string]: Relationship; 
    dcs: Relationship; 
} 

interface Test extends T { 
    relationships: TestRelationships; 
} 

class T1 implements Test { 
    relationships: TestRelationships; 
} 
+0

谢谢!我得到了同样的问题,虽然当我尝试在一个类中实现它:/ '类T1实现测试{ \t关系= { \t \t DCS:{ \t \t \t数据:{ \t \t \t \t ID: “测试”, \t \t \t \t类型: “测试” \t \t \t} \t \t} \t} }' –