Индексация json файла и преобразование его в объект | TypeScript

Рейтинг: 0Ответов: 1Опубликовано: 06.03.2023

Есть json:

{
    "ru": {
        "text_1": "Text #1",
        ...
    },
    ...
}

Как мне с помошью TypeScript преобразовать его в объект? Просто нужна возможность получить любой текст по ключу: langJSON.ru.text_1 или langJSON['ru']['text_1']. Импорт делается как обычный json: import langJSON from './langJSON.json';

Самое важное, что редактор должен определять возможные варианты, как на скрине, поэтому просто поставить as any не вариант.

введите сюда описание изображения

Ответы

▲ 0

Не знаю, в чем особенность вашего редактора кода, но 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;
}