@zarlex/ngx-accessor
Version:
This library provides an adapter to interact with Angular forms. It also provides an adapter to work with object signals and forms
11 lines (10 loc) • 1.08 kB
TypeScript
import { GetPropertyType, IsTokenized } from './get.types';
import { Accessor } from '../accessor';
import { BehaviorSubject } from 'rxjs';
export type IsValidAccessorKey<TKey extends string | undefined, TProperties> = [
TKey
] extends [undefined] ? TKey : TKey extends IsTokenized<TKey, string> ? GetPropertyType<TProperties, TKey> extends never ? never : TKey : keyof TProperties;
export type IsValidArrayAccessorKey<TKey extends string, TProperties> = TKey extends IsTokenized<TKey, string> ? GetPropertyType<TProperties, TKey> extends never ? never : GetPropertyType<TProperties, TKey> extends Array<any> ? TKey : never : (keyof TProperties) extends Array<any> ? keyof TProperties : never;
export type ArrayItemAccessor<TValueType> = Accessor<TValueType, GetPropertyType<TValueType, '0'>>;
export type ArrayAccessors<TValueType> = TValueType extends Array<any> ? Array<ArrayItemAccessor<TValueType>> : never;
export type ArrayAccessorsSignal<TValueType> = TValueType extends Array<any> ? BehaviorSubject<Array<Accessor<TValueType, GetPropertyType<TValueType, '0'>>>> : never;