Skip to content

Instantly share code, notes, and snippets.

@MikuroXina
Created March 4, 2025 06:58
Show Gist options
  • Save MikuroXina/9478732afa785b238a0b4f0917c66137 to your computer and use it in GitHub Desktop.
Save MikuroXina/9478732afa785b238a0b4f0917c66137 to your computer and use it in GitHub Desktop.
A Fixed-size Array type for TypeScript.
export type SizedArray<N extends number, T> = SizedArrayInner<N, T, []>;
type SizedArrayInner<
N extends number,
T,
Acc extends unknown[],
> = N extends PositiveInteger<N>
? number extends N
? T[]
: N extends Acc["length"]
? Acc
: SizedArrayInner<N, T, [T, ...Acc]>
: never;
type PositiveInteger<N extends number> = N extends 0
? never
: `${N}` extends `${number}.${number}`
? never
: `${N}` extends `-${number}`
? never
: N;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment