以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
38. implement Add<A, B>
可以使用递归类型来实现:
type Add<A extends number, B extends number> = B extends 0 ? A : Add< A extends infer X ? (B extends infer Y ? (Y extends 1 ? X+1 : X) : never) : never, B extends infer Y ? (Y extends 1 ? Y : never) : never>;
解释下上述代码:
A
和B
都必须是数字类型。- 如果
B
等于0,那么结果就是A
。 - 否则,递归计算
Add<A+1, B-1>
。
使用例子:
type A = Add<1, 2> // 3type B = Add<0, 0> // 0type C = Add<5, 3> // 8