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():第三个内容[]{
返回新数组();
}
}