import {FormArray, FormControl, FormGroup} from '@angular/forms'; export type FormGroupOf<T> = { [key in keyof T]: T[key] extends Array<infer TArray> ? TArray extends string | number | boolean ? FormControl<T[key] | null | undefined> : FormArray<FormGroup<FormGroupOf<TArray>>> : T[key] extends object ? FormGroup<FormGroupOf<T[key]>> : FormControl<T[key] | null | undefined>; };
export interface IDto { numbers: number[]; other: string; } let form = new FormGroup<FormGroupOf<IDto>>({ numbers: new FormControl([]), other: new FormControl(''), });