typescript

혹시 이런 타입 없었나 생각해보신 적 없으신가요?

냠냠맨 2024. 1. 10. 02:27

아 ~ 어디 "1"부터 원하는 숫자를 다 유니온으로 만들어주는 타입 어디없나~?

type NumberToString<
  N extends number,
  R extends unknown[] = [],
> = R['length'] extends N
  ? never
  : `${R['length']}` | NumberToString<N, [unknown, ...R]>;

type ExcludeNumbers<
  ExcludeFrom extends string,
  End extends string,
> = End extends ExcludeFrom ? never : End;

export type NumberString<
  Start extends number = 0,
  End extends number = 0,
> = ExcludeNumbers<NumberToString<Start>, NumberToString<End>>;

이게 되네..

타입의 세계는 무궁무진하네요..

 

다만 타입스크립트의 재귀호출제한으로 인해 48이상의 값을 넣으면 에러가 발생합니다.

그래도.. 간단한 값을 만들때는 편하게 쓰실 수 있을거에요..

반응형