@cuppachino/type-space
Version:
A collection of type utilities for TypeScript.
15 lines (14 loc) • 375 B
TypeScript
import type { Length } from './length';
/**
* Generates a fixed-length N tuple filled with type T.
*
* @example
* ```
* Fill<5> // [never, never, never, never, never]
* ```
* @example
* ```
* Fill<3, 'a'> // ['a', 'a', 'a']
* ```
*/
export type CreateTuple<L extends number, T = never, A extends T[] = []> = Length<A> extends L ? A : CreateTuple<L, T, [...A, T]>;