类型“Key”不能用于索引类型“Object”

Bir*_*sky 3 types typescript typescript2.0

尝试用声音类型实现功能性的拨动,但我做错了:

function pluck<Object extends {}, Key = keyof Object>(key: Key): (o: Object) => Object[Key] {
  return object => object[key];
}
Run Code Online (Sandbox Code Playgroud)

TS错误:

类型“Key”不能用于索引类型“Object”

Dun*_*can 9

你要Key extends keyof Object:

function pluck<Object extends {}, Key extends keyof Object>(key: Key): (o: Object) => Object[Key] {
  return object => object[key];
}
Run Code Online (Sandbox Code Playgroud)

泛型中的语法T = S指定类型的默认值,但不以任何方式限制类型。