@engie-group/fluid-design-system-angular
Version:
Fluid Design System Angular
26 lines (25 loc) • 684 B
TypeScript
import { InputSignal, InputSignalWithTransform } from '@angular/core';
/**
* Type design to convert a properties type to its equivalent for Angular signal inputs.
*
* Example :
* ```ts
* // For given type,
* type MyType = {
* foo: string;
* bar: boolean;
* };
*
* // this
* type MySignalPropsType = InputSignalProps<MyType>;
*
* // is equivalent to :
* type MySignalPropsType = {
* foo: InputSignal<string>;
* bar: InputSignalWithTransform<boolean, unknown>;
* }
* ```
*/
export type InputSignalProps<T extends object> = {
[K in keyof T]: NonNullable<T[K]> extends boolean ? InputSignalWithTransform<NonNullable<T[K]>, unknown> : InputSignal<T[K]>;
};