web-dev-qa-db-fra.com

Le type ne peut pas être utilisé comme type d'index

Allez sur https://www.typescriptlang.org/play/index.html et collez:

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

recevoir une erreur:

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

Pourquoi?

8
Eu Insumi Prunc

Object.keys renvoie un tableau de propriétés. Vous ne pouvez pas indexer un tableau à l'aide d'un objet; vous devez utiliser un nombre pour représenter le décalage par rapport au début du tableau.

Comme exemple équivalent, qu'attendez-vous de ce code?:

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

C'est absurde.

Edit: Après avoir lu les commentaires de l'OP et avoir relu le code, j'ai réalisé que mon évaluation était fausse. Alors que le problème a est que le code d'origine tente d'indexer la fonction keys à l'aide d'un littéral objet, le vrai problème est l'utilisation de crochets au lieu de parenthèses. Cela fonctionnera:

let keys = Object.keys(userTypes);

Il appelle keys avec userTypes au lieu d'indexer avec lui.

8
Carcigenicate