以下为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>;

解释下上述代码:

  • AB都必须是数字类型。
  • 如果B等于0,那么结果就是A
  • 否则,递归计算Add<A+1, B-1>

使用例子:

type A = Add<1, 2> // 3
type B = Add<0, 0> // 0
type C = Add<5, 3> // 8