UNPKG

ts-lib-extended

Version:
25 lines (24 loc) 730 B
/** * determine type of array items * * @export * @template {IterableIterator<unknown> | ArrayLike<unknown>} T * @since 1.1.0 */ export type ArrayItem<T extends IterableIterator<unknown> | ArrayLike<unknown>> = T extends { [Symbol.iterator](): IterableIterator<infer P>; } ? P : T extends ArrayLike<infer P> ? P : never; type BuildMinArray<TItem, TMin extends number, TFix extends TItem[]> = TFix['length'] extends TMin ? TFix : BuildMinArray<TItem, TMin, [...TFix, TItem]>; /** * Array with a minimum number of items * * @export * @template TItem * @template {number} TMin * @since 1.1.0 */ export type MinArray<TItem, TMin extends number> = [ ...BuildMinArray<TItem, TMin, []>, ...TItem[] ]; export {};