Тип нельзя использовать в качестве типа индекса

на 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 ответов


Object.keys возвращает массив свойств. Вы не можете индексировать массив с помощью объекта, вы должны использовать число, указывающее смещение от начала массива.

в качестве эквивалентного примера, что вы ожидаете от этого кода?:

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

это бессмысленно.

изменить: Прочитав комментарии ОП и снова просмотрев код, я понял, что моя оценка была неправильной. В то время как a проблема в том, что исходный код пытается индексировать keys функция используя литерал объекта, реальная проблема заключается в использовании квадратных скобок вместо круглых скобок. Это сработает:

let keys = Object.keys(userTypes);

он называет keys С userTypes вместо индекса с ним.