以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - TypeScript 类型谜题
46. implement Subtract<A, B>
type Subtract<A extends number, B extends number> = {
0: A,
1: Subtract<A-1, B-1>
}[B extends 0 ? 0 : A extends 0 ? never : 1];
// Tests
type A = Subtract<1, 1> // 0
type B = Subtract<10, 3> // 7
type C = Subtract<3, 10> // never
上述代码实现了一个 Subtract
类型,用于计算两个正整数之间的差值。只需要输入正整数,并确保第二个数小于等于第一个数即可。例如 Substract<10, 3>
应该返回 7。如果第二个数大于第一个数,那么这个类型将返回 never
。