Type不能用作索引类型

Eu *_*unc 8 typescript typescript2.0

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

let userTypes = {};
let keys = Object.keys[userTypes];
Run Code Online (Sandbox Code Playgroud)

收到错误:

error TS2538: Type '{}' cannot be used as an index type.
Run Code Online (Sandbox Code Playgroud)

为什么?

Car*_*ate 8

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

作为一个等效的例子,你期望这段代码做什么?:

var a = [1, 2, 3, 4]
console.log(a[{}]);
Run Code Online (Sandbox Code Playgroud)

这是荒谬的.

编辑:在阅读OP的评论并再次查看代码之后,我意识到我的评估是错误的.当一个问题是,原来的代码试图索引keys功能使用对象文本,真正的问题是使用方括号,而不是括号.这将有效:

let keys = Object.keys(userTypes);
Run Code Online (Sandbox Code Playgroud)

它要求keysuserTypes替代指数的使用它.