【发布时间】:2021-10-14 18:04:14
【问题描述】:
我正在尝试编写一个简单的执行器,它一个接一个地运行 thunk 并将 thunk 的结果返回到一个数组中:
type Thunk<R> = () => R;
type MapToThunk<T extends [...unknown[]]> = T extends [infer Head, ...infer Tail] ? [Thunk<Head>, ...MapToThunk<Tail>] : [];
function executeSequentially<R extends [...unknown[]]>(thunks: MapToThunk<[...R]>): R {
let result = [];
for (const thunk of thunks) {
result.push(thunk());
}
return result;
}
但是 tsc 给了我“类型 'unknown[]' 不能分配给类型 'R'。 'unknown[]' 可分配给类型 'R' 的约束,但可以使用约束 'unknown[]' 的不同子类型来实例化 'R'。”
为什么类型检查会失败?
【问题讨论】:
标签: typescript typescript-generics