Thing <t>类扩展T

时间:2019-03-02 21:51:46

标签: javascript typescript class

关于标题,打字稿中可能有与class Thing<T> extends T等效的内容吗?最好以可读的方式。当前尝试执行此行代码会导致VSCode中出现错误Cannot find name 'T'。试图在此处和Google上找到答案,但未发现相似之处。

2 个答案:

答案 0 :(得分:0)

您不能直接做到这一点,可以创建一个中间类,然后使用类型断言使它适合返回T和该类的自定义构造函数签名:

class _Thing { }

const Thing: {
  new <T>(): _Thing & T
} = _Thing as any;


new Thing<{ prop: string }>().prop

答案 1 :(得分:0)

T是一种类型,只能扩展值(类):

function <T extends new(...arg:any[]) => any> Mixin(Parent: T) {
  return class Mixin extends Parent {
    // ...
  }
}

const Sub = Mixin(class Parent {
 works() { /*..*/ }
 //...
});

(new Sub).works();