angular - Underklassing av FormControl utløser TS2510 - Basis konstruktører må alle ha samme returtype
Jeg prøvde å lage en underklasse av Angulars FormControl da jeg støtte på denne feilen: TS2510: Base constructors must all have the same return type
import { FormControl } from '@angular/forms';
export class Control<T = any> extends FormControl<T> {}
Jeg mistenker at ɵFormControlCtor har skylden.
- Hva er grunnen bak denne meldingen?
- Finnes det en ren løsning (annet enn det som foreslås her)?
Lekeplass
Rediger:
Å utvide AbstractControl utløser ikke denne feilen:
import { AbstractControl } from '@angular/forms';
export class Control<T> extends AbstractControl<T> {
patchValue(): void { }
reset(): void { }
setValue(): void { }
}
Lekeplass
Svar #1
Kort fortalt,
FormControl er for øyeblikket definert som et klasseuttrykk av typen ɵFormControlCtor med et grensesnitt som har flere overbelastninger for konstruktøren, ikke en faktisk klasse.
Som påpekt av Andrew Allen, skyldes dette TSs manglende evne til å ha konstruktøroverlaster med forskjellige typer. (#35387).
Svar #2
Står overfor samme problem, og det er nok å legge til null-alternativ til FormControl-typen som
class YourFormControlWrapper<TValue = any> extends FormControl<TValue | null>