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