如何推断作为打字稿中对象属性的数组的类型?

时间:2020-03-21 17:28:56

标签: typescript

我正在尝试使用函数初始化类实例属性。我希望将实例属性类型限制为Array<T>。我尝试使用打字稿推断解压缩T

class X {
    arr: Array<number>
}

type Unpacked<T> = T extends Array<infer U> ? U : never

function setDefault<T, K extends keyof T>(object: T, key: K, value: Unpacked<T[K]>): void {
    object[key] = [value]
}

setDefault(new X(), 'arr', 1);


不幸的是,赋值object[key] = [value]给了我编译器错误:
TS2322: Type 'Unpacked<T[K]>[]' is not assignable to type 'T[K]'.

我觉得这是一件容易的事,但是我无法理解为什么它不起作用。

0 个答案:

没有答案