类型“{}”不可分配给类型“Record<Key, Value>”

dps*_*dps 32 typescript

我有以下代码:

const foo = <Key extends keyof any, Value>() {
  type Rec = Record<Key, Value>
  const a: Rec = {}
}
Run Code Online (Sandbox Code Playgroud)

在第三行打字稿给出了一个错误Type '{}' is not assignable to type 'Record<Key, Value>。为什么会发生这种情况?

dps*_*dps 8

在我的例子中,通用参数是string,可以将空对象分配给Record<string, unknown>.
它不接受的原因{}Key参数可以是具体的字符串联合类型,例如'prop1' | 'prop2'. 在这种情况下,用户被迫将这些属性添加到对象中