Ниже приведен пример проблемы, с которой я сталкиваюсь в данный момент.Я пытаюсь написать миксин, который правильно выводит и отражает универсальный тип из подкласса класса, предоставленного миксину.
abstract class A<T = {}> {
public abstract init(): T;
}
interface IB {
something: string;
}
class B extends A<IB> {
public init(): IB {
return null;
}
}
type ConstructorOf<T = {}> = new (...args: any[]) => T;
function ApplyC<T extends ConstructorOf<A>>(base: T) {
abstract class C extends base {
}
return C;
}
class D extends ApplyC(B) {
constructor() {
super();
// this.init()
}
}
Где я написал this.init()
, intellisense говорит мне, что яперегрузка на init()
, одна - init(): {}
, а другая - init(): IB
, проблема в том, что я не хочу, чтобы это выглядело как перегрузка, и я просто хочу, чтобы появилась IB.
Мне нужно, чтобы T
in A<T = {}>
был выведен каким-либо образом в миксине и передать его в ConstructorOf<A>
из предоставленного base: T
.