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?
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.