Sobes.tech
Middle

Kako tipizirati API odgovor ako ugovor nije savršen?

sobes.tech АИ

Одговор од АИ

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

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

Пример в TypeScript:

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

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