ts-lib-extended
Version:
Additional types and tools for typescript
25 lines (24 loc) • 730 B
TypeScript
/**
* 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 {};