我想用类型包装现有的Angular API。我有一个FormControl
和一个FormGroup
现在都接受一个泛型:
export interface AbstractControl<T> extends _AbstractControl {
value: T;
}
export class FormControl<T> extends _FormControl {
constructor(formState?: T, validatorOrOpts?: any, asyncValidator?: any) {
super(formState, validatorOrOpts, asyncValidator);
}
}
export class FormGroup<T> extends _FormGroup {
constructor(
public controls: { [K in keyof T]: AbstractControl<T[K]> },
validatorOrOpts?: any,
asyncValidator?: any
) {
super(controls, validatorOrOpts, asyncValidator);
}
}
问题在于,当我使用嵌套的FormGroup
时,会将其视为自己的单独实体:
type P = {
a: string;
b: {
c: string;
};
};
const group = new FormGroup<P>({
a: new FormControl(""),
b: new FormGroup({
// I expect this object type to be P['b']
})
});
我如何使其工作?
这是一个实时示例:https://stackblitz.com/edit/angular-ivy-gihck4?file=src%2Fapp%2Ftest.ts