Typescript 实现编译器未后跟的链
我有以下代码:Typescript 实现编译器未后跟的链,typescript,interface,compiler-errors,Typescript,Interface,Compiler Errors,我有以下代码: interface-OneThing{ } 接口另一个扩展了一个{ } 第三个接口扩展了另一个接口{ } 界面管理员{ getThings():T[]; } 类thingmajigger实现ThingKeeper{ getThings():第三个内容[]{ 返回新数组(); } }如果查看类型检查器报告的错误消息,很明显发生了什么: ()=>ThirdThing[]不可分配给()=>T[] ThirdThing[]不可分配给T[] ThirdThing不可分配给T 类型第三
interface-OneThing{
}
接口另一个扩展了一个{
}
第三个接口扩展了另一个接口{
}
界面管理员{
getThings():T[];
}
类thingmajigger实现ThingKeeper{
getThings():第三个内容[]{
返回新数组();
}
}
如果查看类型检查器报告的错误消息,很明显发生了什么:
不可分配给()=>ThirdThing[]
()=>T[]
不可分配给ThirdThing[]
T[]
不可分配给ThirdThing
T
类型<代码>第三版和<代码> t>代码>不相关,例如,如果考虑这样的层次:
OneThing
/ \
T ThirdThing
因此,编译器说它不能被确定地分配。解决方案是通过ThingKeeper
类关联T
和ThirdThing
:
interface OneThing {
}
interface AnotherThing extends OneThing {
}
interface ThirdThing extends AnotherThing {
}
interface ThingKeeper<T extends OneThing> {
getThings(): T[];
}
class Thingamajigger implements ThingKeeper<ThirdThing> {
getThings(): ThirdThing[] {
return new Array<ThirdThing>();
}
}
interface-OneThing{
}
接口另一个扩展了一个{
}
第三个接口扩展了另一个接口{
}
界面管理员{
getThings():T[];
}
类thingmajigger实现ThingKeeper{
getThings():第三个内容[]{
返回新数组();
}
}