@ngneat/reactive-forms
Version:
(Angular Reactive) Forms with Benefits
20 lines (19 loc) • 1.03 kB
TypeScript
import { FormGroup } from './form-group';
import { FormControl } from './form-control';
import { FormArray } from './form-array';
import { AbstractControl } from '@angular/forms';
declare type NonUndefined<T> = T extends undefined ? never : T;
export declare type ControlsOf<T extends Record<string, any>> = {
[K in keyof T]: NonUndefined<T[K]> extends AbstractControl ? T[K] : NonUndefined<T[K]> extends (infer R)[] ? FormArray<R> : NonUndefined<T[K]> extends Record<any, any> ? FormGroup<ControlsOf<T[K]>> : FormControl<T[K]>;
};
export declare type ValuesOf<T extends ControlsOf<any>> = {
[K in keyof T]: NonUndefined<T[K]> extends FormControl<infer R> ? R : NonUndefined<T[K]> extends FormGroup<infer R> ? ValuesOf<R> : NonUndefined<T[K]> extends FormArray<infer R, infer C> ? R[] : NonUndefined<T[K]>;
};
export declare type DeepPartial<T> = {
[K in keyof T]?: T[K] extends Record<any, any> ? DeepPartial<T[K]> : T[K];
};
export declare type BoxedValue<T> = T | {
value: T;
disabled?: boolean;
};
export {};