Mat*_*ers 3 typescript angular angular-forms
使用 Angular 中新的类型化表单控件,我们可以做到这一点:
interface MyFormGroup {
id: FormControl<number | null>;
name: FormControl<string | null>;
email: FormControl<string | null>;
}
Run Code Online (Sandbox Code Playgroud)
FormControl它为下面的每个定义了一个类型FormGroup:
myFormGroup = new FormGroup<MyFormGroup>({
id: new FormControl(42),
name: new FormControl('Arthur'),
email: new FormControl('arthur@dent.com')
});
Run Code Online (Sandbox Code Playgroud)
该值的类型FormGroup为:
Partial<{
id: number | null;
name: string | null;
email: string | null;
}>
Run Code Online (Sandbox Code Playgroud)
如果我想FormGroup在函数中使用 the 的值,是否有获取该值类型的快捷方式,或者必须单独定义它,例如
interface MyFormGroupValue {
id: number | null;
name: string | null;
email: string | null;
}
myFunction(myFormGroupValue: MyFormGroupValue){
console.log(myFormGroupValue);
}
Run Code Online (Sandbox Code Playgroud)
换句话说,是否可以MyFormGroupValue从中派生类型MyFormGroup?
type ExtractFormControl<T> = {
[K in keyof T]: T[K] extends FormControl<infer U> ? U : T[K]
}
type MyFormGroupValue = ExtractFormControl<MyFormGroup>
// type MyFormGroupValue = {
// id: number | null;
// name: string | null;
// email: string | null;
// }
Run Code Online (Sandbox Code Playgroud)