Sobes.tech
Middle

Ako typizovať odpoveď API, ak zmluva nie je dokonalá?

sobes.tech AI

Odpoveď od AI

Если контракт API неидеален (например, поля могут отсутствовать, иметь разные типы или структуру), типизация ответа можно сделать более гибкой:

  • Использовать опциональные поля (? в TypeScript) для необязательных данных.
  • Применять объединения типов (union types), чтобы учесть возможные варианты.
  • Использовать тип unknown или any для частей данных с непредсказуемой структурой, с последующей проверкой и приведением типов.
  • Создавать интерфейсы с минимально необходимыми полями и расширять их по мере уточнения контракта.
  • Применять библиотеки для валидации и парсинга (например, io-ts, zod), которые помогут безопасно преобразовывать и проверять данные во время выполнения.

Пример в TypeScript:

interface ApiResponse {
  id: number;
  name?: string; // поле может отсутствовать
  data: string | null; // может быть строкой или null
  extra?: unknown; // неизвестная структура
}

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