Я играю с Typescript и конвертирую через небольшую библиотеку к нему из Javascript. В одной области кода было установлено статически определенное сопоставление имени дружественного ключа с их ключевым кодом. Исходный код выглядел так:
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: string; 1: строка; 2: строка; 4: строка; 8: строка; 9: строка;: string; } 'to' {[имя: номер]: строка; } ': Индексные подписи типов' {0: string; 1: строка; 2: строка; 4: строка; 8: строка; 9: строка;: string; } 'и' {[имя: номер]: строка; } 'несовместимы
Как определить это сопоставление в Typescript?