Индексация json файла и преобразование его в объект | TypeScript
Есть json:
{
"ru": {
"text_1": "Text #1",
...
},
...
}
Как мне с помошью TypeScript преобразовать его в объект? Просто нужна возможность получить любой текст по ключу: langJSON.ru.text_1 или langJSON['ru']['text_1']. Импорт делается как обычный json: import langJSON from './langJSON.json';
Самое важное, что редактор должен определять возможные варианты, как на скрине, поэтому просто поставить as any не вариант.
Ответы (1 шт):
Не знаю, в чем особенность вашего редактора кода, но typescript умеет интерпретировать тип импортируемого JSON - файла. Чтобы индексировать ваш JSON, можно объявить тип через выражение typeof и затем индексировать тип по имени полей при помощи следующего синтаксиса: TypeName['ru']['text_1']. Пример ниже:
import langJSON from './langJSON.json';
type LangJSON = typeof langJSON;
// Индексация типа 'ru' объекта langJSON
function getText1Vaue(langSettings: LangJSON['ru']) {
return langSettings.text_1;
}
