web-dev-qa-db-ja.com

タイプはインデックスタイプとして使用できません

https://www.typescriptlang.org/play/index.html に移動して貼り付けます:

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

エラーを受け取る:

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

どうして?

8
Eu Insumi Prunc

Object.keysはプロパティの配列を返します。オブジェクトを使用して配列のインデックスを作成することはできません。配列の先頭からのオフセットを表す数値を使用する必要があります。

同等の例として、このコードに何を期待しますか?:

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

それは無意味です。

編集:OPのコメントを読んで、コードをもう一度確認した後、評価が間違っていることに気付きました。 aの問題は、元のコードがオブジェクトリテラルを使用してkeys関数にインデックスを付けようとしていることですが、実際の問題は括弧ではなく角括弧を使用していることです。これは動作します:

let keys = Object.keys(userTypes);

インデックスの代わりにkeysuserTypesを呼び出します。

8
Carcigenicate