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

19 lines (18 loc) 1.01 kB
/** Type of the elements in an array */ export type ElementOf<T> = T extends (infer E)[] ? E : T extends readonly (infer E)[] ? E : never; /** Used internally for `Tail`. */ type AsFunctionWithArgsOf<T extends unknown[] | readonly unknown[]> = (...args: T) => any; /** Used internally for `Tail` */ type TailArgs<T> = T extends (x: any, ...args: infer T) => any ? T : never; /** Elements of an array after the first. */ type Tail<T extends unknown[] | readonly unknown[]> = TailArgs<AsFunctionWithArgsOf<T>>; /** Used internally for `IndicesOf`; probably useless outside of that. */ type AsDescendingLengths<T extends unknown[] | readonly unknown[]> = [ ] extends T ? [0] : [ ElementOf<ElementOf<AsDescendingLengths<Tail<T>>[]>>, T['length'] ]; /** Union of numerical literals corresponding to a tuple's possible indices */ export type IndicesOf<T extends unknown[] | readonly unknown[]> = number extends T['length'] ? number : [ ] extends T ? never : ElementOf<AsDescendingLengths<Tail<T>>>; export {};