Angular的
FormControl<T>
被定义为接口中具有构造函数重载的类表达式。这是由于打字脚本的限制。
我能够将代码缩小到:
export interface FormControl<TValue = any> {
setValue(value: TValue): void;
}
export interface ɵFormControlCtor {
new <T>(): FormControl<T>;
new <T>(): FormControl<T | null>;
prototype: FormControl<any>;
}
export const FormControl: ɵFormControlCtor = (class FormControl<T> {
setValue(value: T): void { }
});
不幸的是,子类化FormControl<T>
会触发TS2510Base constructors must all have the same return type
。
已经有另一个问题与此错误有关,但建议解决方案不适用于泛型类型。
那么,您将如何对FormControl
进行子类化呢?
也许以某种方式也可以做另一个类表达式来对其进行子类化?
游乐场
我不确定这对你来说是否足够,但如果你的泛型类型完全填充了所有重载,它就会起作用:
class Foo<T> extends FormControl<T | null> {
}
操场