Typescript 두 개의 숫자 리터럴 유형 X - Y 방법(빼기)

우리는 우리가 어떻게 할 수 있는지 보았습니다.

이제 뺄셈에 비슷한 트릭을 적용할 수 있습니까?

예, 할 수 있습니다. 다음과 같이 처리합니다.

type CreateArrayWithLengthX<
    LENGTH extends number,
    ACC extends unknown[] = [],
> = ACC['length'] extends LENGTH
    ? ACC
    : CreateArrayWithLengthX<LENGTH, [...ACC,1]>

type Subtraction<LARGER extends number, SMALLER extends number, GAP extends number[] = []> = 
    [...GAP,...CreateArrayWithLengthX<SMALLER>]['length'] extends [...CreateArrayWithLengthX<LARGER>]['length'] 
    ? GAP['length'] 
    : Subtraction<LARGER, SMALLER, [1,...GAP]>

type result = Subtraction<849, 654> // 195


playground

제한: TS 재귀의 최대 깊이가 1000이기 때문에 숫자는 999를 초과할 수 없으며 양의 정수로만 작동합니다.

좋은 웹페이지 즐겨찾기