我有以下代码:
const foo = <Key extends keyof any, Value>() {
type Rec = Record<Key, Value>
const a: Rec = {}
}
在第3行,typescript给出了一个错误Type '{}' is not assignable to type 'Record<Key, Value>
。为什么会发生这种情况?
在我的例子中,泛型参数是string
,可以将空对象分配给Record<string, unknown>
不接受{}
的原因是Key
参数可以是类似'prop1' | 'prop2'
的具体字符串并集类型。在这种情况下,用户被迫将这些属性添加到对象