7 lines
395 B
TypeScript
7 lines
395 B
TypeScript
|
|
// @see https://stackoverflow.com/a/59906630/392905
|
||
|
|
type ArrayLengthMutationKeys = 'splice' | 'push' | 'pop' | 'shift' | 'unshift' | number
|
||
|
|
type ArrayItems<T extends Array<any>> = T extends Array<infer TItems> ? TItems : never
|
||
|
|
export type FixedLengthArray<T extends any[]> =
|
||
|
|
Pick<T, Exclude<keyof T, ArrayLengthMutationKeys>>
|
||
|
|
& { [Symbol.iterator]: () => IterableIterator< ArrayItems<T> > }
|