169 похожих чатов

Всем привет! Такой вопрос: я изначально прописала типизацию юзера для

аутентификации. У меня получился вот такой юзер:
export type SignedInUserType = {
displayName: string | null | undefined;
phoneNumber: string | null;
photoURL: string | null | undefined;
uid: string;
};

Но теперь я дошла в проекте до создания чатов с помощью react-native-gifted-chat и там юзер имеет другую типизацию, а именно :
_id: string | number;
name?: string;
avatar?: string | renderFunction;

Можно ли как-то исправить типизацию библиотеки, так как если я изменю свою типизацию, то придется очень много где исправлять в проекте

11 ответов

9 просмотров

Привет! Типизация в виде интерфейса в react-native-gifted-chat?

Tatsiana-Kedrova Автор вопроса
Евгений Заикин
Привет! Типизация в виде интерфейса в react-native...

да, там интерфейс. export interface User { _id: string | number; name?: string; avatar?: string | renderFunction; }

Tatsiana-Kedrova Автор вопроса
Евгений Заикин
Привет! Типизация в виде интерфейса в react-native...

Дело в том, что именно эти поля мне и нужны. Но их типизация отличается от моей

Напиши трансформер, который будет твой объект юзера конвертировать в тот, который ожидает чат, и наоборот.

Tatsiana-Kedrova Автор вопроса
Евгений Заикин
MyInterface extends User { ... your fields ... }

Но я так понимаю, что например в библиотеке уже захардкоджено например, что _id - это относится к айдишнику авторизованного пользователя. Как я могу расширить существующие значения аналогичными? То есть разве могу я например написать помимо существующего _id свой userId?

Tatsiana-Kedrova Автор вопроса
Tatsiana Kedrova
опа, это что-то новенькое)

https://refactoring.guru/ru/design-patterns/adapter

Tatsiana Kedrova
Но я так понимаю, что например в библиотеке уже за...

Можешь) interface MyUser extends User { userId: string; } Таким образом у объектов с интерфейсом MyUser будет и _id и userId.

Евгений Заикин
Можешь) interface MyUser extends User { userI...

а он там нужен? задача-то в том чтобы их сопоставить и переисполльзовать уже имеющееся значение в другом интерфейсе с его набором полей, а не продублировать значение в два разных поля третьего интерфейса

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

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта