Devilz_1
@Devilz_1
Frontend-Developer

Как должен выглядеть объект при пересечении типов?

Всем привет.

Есть пользовательские типы, в одном из них используется пересечение типов:
export type UserInfoType = {
   name: string,
   login: string,
   age: number | string,
   gender: string
};

export type UserType = {
    [key: string]: UserInfoType;
} & {
    city: string;
    country: string;
};


Суть в чём? С сервера я получаю объект, где всегда разное n-ое количество пользователей (объектов) и всегда есть свойства city и country. Типа:

const users: UserType = {
   "Anna": {
      name: "Anna",
      login: "Ann_90",
      age: 28,
      gender: female
   },
   "Tony": {
      name: "Tony",
      login: "ttt_comeback",
      age: 25,
      gender: male
   },
   "Lanessa": {
      name: "Lanessa",
      login: "Lana_142",
      age: 35,
      gender: female
   },
   city: Tampa,
   country: USA,
}


Но, когда эти данные приходят на клиент, ТС ругается на несоответствие типов. Т.е. не получается синхронизировать данные с сервера и тип, который я написал. Подскажите плз в чём прокол?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Raxen
@Raxen
TechLead Frontend Developer, Beeline
Что-то мне подсказывает, что так может сработать

type UsersValues = {
    [key: string]: string | number;
};

type UserType = {
  [key: string]: UsersValues | string;
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Напрямую такой тип задать нельзя. Можно вывести тип, использую функцию-прокладку.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы