Типизированный json?

В TypeScript есть возможность типизировать JSON-объекты с помощью так называемых интерфейсов. Интерфейсы представляют собой описание структуры объекта, которое может быть использовано для проверки типов при компиляции и во время разработки.

В обычном JavaScript данные в формате JSON представлены в виде объектов без определенной структуры. Однако, в TypeScript можно создавать типы для JSON-данных, чтобы иметь большую уверенность в правильности использования этих данных в коде.

Для типизации JSON-объекта следует создать интерфейс, который определит свойства и их типы для данного объекта. Например, предположим, что у нас есть JSON-объект, представляющий информацию о пользователе:

interface User {
  name: string;
  age: number;
  email: string;
}

В этом примере определены три свойства - name, age и email, соответствующие типам string, number и string соответственно.

Теперь мы можем использовать этот интерфейс для проверки типов при работе с JSON-объектом:

const json: User = {
  name: "John Doe",
  age: 25,
  email: "[email protected]"
};

console.log(json.name); // "John Doe"
console.log(json.age); // 25
console.log(json.email); // "[email protected]"

Если мы попытаемся добавить некорректное свойство или не указать обязательное свойство, TypeScript выдаст ошибку, предупредив о нарушении типов:

const json: User = {
  name: "John Doe",
  age: 25,
  email: "[email protected]",
  address: "123 Main St" // Error: Object literal may only specify known properties
};

const json: User = {
  name: "John Doe",
  age: 25 // Error: Property 'email' is missing in type '{ name: string; age: number; }'
};

Таким образом, типизированный JSON позволяет нам более безопасно работать с данными, представленными в формате JSON, и предотвращает потенциальные ошибки при обработке этих данных.