私は Typescript で遊んでいて、小さなライブラリを Javascript からそれに変換しています。コードの 1 つの領域では、フレンドリ キー名からキーコードへの静的に定義されたマッピングがありました。元のコードは次のようになります。
keys: { "Backspace": 8, "Tab": 9, "Enter": 13, ....etc.. };
これを typescript で次のように定義しました。
static keys: { [name: string]: number; } = { "Backspace": 8, "Tab": 9, "Enter": 13, ... etc.. };
これは問題なく動作するように見えますが、コードの別の部分では反対のマッピングを使用しています。
chars: {8:"Backspace",9:"Tab",13:"Enter", ...etc... };
そこで、以前に行ったのと同じタイプの定義を typescript で実行しようとしました。
chars: { [code: number]: string; } = { 8: "Backspace", 9: "Tab", 13: "Enter", ...etc.. };
これは、次のエラーでコンパイルに失敗します:
'{ 0: 文字列; を変換できません。1: 文字列; 2: 文字列; 4: 文字列; 8: 文字列; 9: 文字列; : ストリング; }' から '{ [名前: 番号]: 文字列; }': 型のインデックス シグネチャ '{ 0: string; 1: 文字列; 2: 文字列; 4: 文字列; 8: 文字列; 9: 文字列; : ストリング; }' および '{ [名前: 番号]: 文字列; }' は互換性がありません
Typescriptでこのマッピングを定義するにはどうすればよいですか?