Type不能用作索引类型

时间:2016-12-30 18:28:00

标签: typescript typescript2.0

转到https://www.typescriptlang.org/play/index.html并粘贴:

let userTypes = {};
let keys = Object.keys[userTypes];

收到错误:

error TS2538: Type '{}' cannot be used as an index type.

为什么?

1 个答案:

答案 0 :(得分:8)

Object.keys返回一组属性。您不能使用对象索引数组;您必须使用数字来表示从数组开始的偏移量。

作为一个等效示例,您希望此代码能做什么?:

var a = [1, 2, 3, 4]
console.log(a[{}]);

这是荒谬的。

编辑: 在阅读OP的评论并再次查看代码之后,我意识到我的评估是错误的。虽然 a 问题是原始代码试图使用对象文字索引keys函数,但真正的问题是使用方括号而不是括号。这将有效:

let keys = Object.keys(userTypes);

使用keys调用userTypes而不是使用索引编制索引。