类型“键”不能用于索引类型“对象”

Posted

技术标签:

【中文标题】类型“键”不能用于索引类型“对象”【英文标题】:Type 'Key' cannot be used to index type 'Object' 【发布时间】:2018-04-01 11:33:40 【问题描述】:

尝试使用声音类型实现功能性 pluck,但我做错了:

function pluck<Object extends , Key = keyof Object>(key: Key): (o: Object) => Object[Key] 
  return object => object[key];

TS 错误:

类型'Key'不能用于索引类型'Object'

【问题讨论】:

【参考方案1】:

你想要Key extends keyof Object:

function pluck<Object extends , Key extends keyof Object>(key: Key): (o: Object) => Object[Key] 
  return object => object[key];

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

【讨论】:

以上是关于类型“键”不能用于索引类型“对象”的主要内容,如果未能解决你的问题,请参考以下文章

嵌套对象 -> 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

SQL有三个类型的索引,唯一索引 不能有重复,但聚集索引,非聚集索引可以有重复

typescript 编译报错 不能用于索引类型

JAVA的集合类型都有哪些

更新 Map 的值时,“元素隐式具有 'any' 类型,因为类型的表达式不能用于索引类型”的错误

为啥 TypeScript 对象不能用泛型类型索引?