@Julia-Kovalchuk

Типизация большого объекта в Typescript?

Ситуация: к нам с сервера приходит массив с объектами array1. Объекты разные по содержанию, но нам нужны только пару ключей, которые есть у каждого объекта. Использую функцию маппер, чтобы преобразовать массив array1 в массив объектов с необходимыми мне свойствами (array2). Можно ли как-то коротко протипизировать приходящий к нам массив array1? Или мы можем только типизировать массив с объектами полностью (с перечислением необязательных свойств)? Вариант с any[] прошу не предлагать))
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Объекты разные по содержанию, но нам нужны только пару ключей, которые есть у каждого объекта

Почему бы тогда не сделать интерфейс, у которого будут как раз эти пара нужных ключей, которые есть у всех?
Не обязательно же максимально точный и полный тип делать.
type Item = { a: number };
const data: Array<Item> = [ // О том что существует "b" и "c" мы молча забудем :)
  {"a": 1, "b": 42},
  {"a": 2, "c": 33}
];

console.log(data[0].a)
Ответ написан
Aetae
@Aetae Куратор тега TypeScript
Тлен
То что приходит с сервера вообще не типизируется, потому что приходит оно на этапе исполнения кода, а типы существуют только на этапе компиляции.

Любой тип который вы присваиваете приходящему в будущем ответу является по сути обманом TS'а, потому что вы не можете гарантировать, что с сервера не прилетит что-то другое.

Правильным действием является обозначение любого приходящего ответа от сервера как unknown, и работа с ним исходя из этого, со всеми требуемыми проверками перед какими-либо действиями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы