UNPKG

@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
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;