Sobes.tech
Назад к вопросам
Middle
3

Расскажи про TypeScript: если объявить объект User с полем id: number, а с сервера придёт id: string — как об этом узнать заранее?

Компании, где спрашивали
Data World

Ответ от нейросети

sobes.tech AI

TypeScript — это статически типизированный язык, но при работе с данными с сервера типы не гарантированы, так как данные приходят в формате JSON и могут не соответствовать ожидаемым типам.

Если у нас есть интерфейс:

interface User {
  id: number;
  name: string;
}

а с сервера приходит объект с id в виде строки, TypeScript не сможет это проверить во время компиляции, так как типы проверяются только на этапе разработки, а данные приходят динамически.

Чтобы заранее узнать о несоответствии, нужно реализовать валидацию данных, например, с помощью библиотек вроде io-ts, zod или вручную проверять типы после получения данных:

function isUser(obj: any): obj is User {
  return typeof obj.id === 'number' && typeof obj.name === 'string';
}

const data = JSON.parse(response);
if (!isUser(data)) {
  throw new Error('Invalid user data');
}

Таким образом, TypeScript помогает с типами на этапе разработки, но для данных с сервера нужна дополнительная проверка.