我有一个接口:
export interface Person {
name: string;
age: number;
phones: Phone[];
}
如果不是数组,我想将这些属性转换为FormGroup,如果是数组,则转换为FormArray(如本例中的电话)。我试着创建一个这样的界面
export type GenericFormModel<T> = {
[K in keyof T]: K extends [] ? AbstractControl<T[K]> : FormControl<T[K] | null>;
};
但是就是不行,typescript还是认为phones是一个FormGroup,但是它应该是一个FormArray。我该怎么解决?
1条答案
按热度按时间webghufk1#
问题是你正在检查
K extends []
,其中K
只是一个键:'name' | 'age' | 'phones'
。您应该检查的是键K
下的值。另一个问题是,您正在检查[]
,这是一个空元组,只有当值也是[]
时,它才会为真。而是检查unknown[]
。