angular - Subclasificar FormControl provoca TS2510 - Los constructores base deben tener todos el mismo tipo de retorno
Estaba tratando de subclasear FormControl de Angular cuando me encontré con este error: TS2510: Los constructores base deben tener todos el mismo tipo de retorno
import { FormControl } from '@angular/forms';
export class Control<T = any> extends FormControl<T> {}
Sospecho que ɵFormControlCtor tiene la culpa.
- ¿Cuál es la razón detrás de este mensaje?
- ¿Hay una solución limpia (aparte de lo que se sugiere aquí)?
Parque infantil
Editar:
Extender el AbstractControl no provoca este error:
import { AbstractControl } from '@angular/forms';
export class Control<T> extends AbstractControl<T> {
patchValue(): void { }
reset(): void { }
setValue(): void { }
}
Parque infantil
Respuesta #1
Resumiendo,
FormControl está definido actualmente como una expresión de clase del tipo ɵFormControlCtor con una interfaz que tiene múltiples sobrecargas para el constructor, no como una clase adecuada.
Como señaló Andrew Allen, esto se debe a la incapacidad de TS de tener sobrecargas de constructor con diferentes tipos. (#35387).
Respuesta #2
Frente al mismo problema y basta con agregar una opción nula al tipo FormControl como
class YourFormControlWrapper<TValue = any> extends FormControl<TValue | null>