以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - TypeScript 类型谜题
34. implement Repeat<T, C>

解答:

可以通过递归实现 Repeat 类型。

type Repeat<T, C extends number> = C extends 0 ? [] : [T, ...Repeat<T, C-1>];

首先判断 C 是否为 0,如果是,直接返回空数组,否则返回一个由 T 和重复的 T 组成的数组。

测试代码:

type A = Repeat<number, 3> // [number, number, number]
type B = Repeat<string, 2> // [string, string]
type C = Repeat<1, 1> // [1, 1]
type D = Repeat<0, 0> // []

// 验证类型
const test: [A, B, C, D] = [[1, 2, 3], ['a', 'b'], [1, 1], []];

如果 C 是一个负数,则编译不通过。