Type de ne peut pas être utilisée comme un indice de type
Aller à https://www.typescriptlang.org/play/index.html et coller:
let userTypes = {};
let keys = Object.keys[userTypes];
recevoir le message d'erreur:
error TS2538: Type '{}' cannot be used as an index type.
Pourquoi?
OriginalL'auteur Eu Insumi Prunc | 2016-12-30
Vous devez vous connecter pour publier un commentaire.
Object.keys
retourne un tableau de propriétés. Vous ne pouvez pas l'indice d'un tableau à l'aide d'un objet, vous devez utiliser un certain nombre de représenter le décalage à partir du début du tableau.Comme un équivalent exemple, qu'attendez-vous de ce code?:
C'est absurde.
Edit:
Après la lecture de l'OP et les commentaires et à la recherche, puis à nouveau le code, j'ai réalisé que mon évaluation est erronée. Alors que un problème est que le code d'origine est de tenter de l'indice de la
keys
fonction à l'aide d'un objet littéral, le vrai problème est l'utilisation de crochets à la place des parenthèses. Cela va fonctionner:Il appelle
keys
avecuserTypes
au lieu de index.Maintenant, je vois le embarrassante faute de frappe... Merci...
Doit avoir été
Object.keys(userTypes)
En réalité, j'ai effectivement mal compris le code. Je pensais que votre problème est tout simplement le fait que vous avez été l'indexation avec un
{}
, qui c'est puisque vous essayez de l'indice de lakeys
fonction à l'aide de l'objet littéral. Vous avez raison, bien que le vrai problème est l'utilisation incorrecte de crochets. Je vais mettre à jour ma réponse.Je m'attends à ce qu'il équivalent à
{ '[object Object]': undefined }[ {} ]
.OriginalL'auteur Carcigenicate