Назад к вопросам
МТС Банк
Middle
3
Как типизировать ответ API, если контракт не идеален?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Если контракт API неидеален (например, поля могут отсутствовать, иметь разные типы или структуру), типизация ответа можно сделать более гибкой:
- Использовать опциональные поля (
?в TypeScript) для необязательных данных. - Применять объединения типов (
union types), чтобы учесть возможные варианты. - Использовать тип
unknownилиanyдля частей данных с непредсказуемой структурой, с последующей проверкой и приведением типов. - Создавать интерфейсы с минимально необходимыми полями и расширять их по мере уточнения контракта.
- Применять библиотеки для валидации и парсинга (например,
io-ts,zod), которые помогут безопасно преобразовывать и проверять данные во время выполнения.
Пример в TypeScript:
interface ApiResponse {
id: number;
name?: string; // поле может отсутствовать
data: string | null; // может быть строкой или null
extra?: unknown; // неизвестная структура
}
Такой подход позволяет работать с реальными данными, не ломая типизацию и сохраняя безопасность кода.