Size: a a a

JavaScript.Ninja

2020 August 07

AP

Alexey Pan in JavaScript.Ninja
Знак вопроса после переменной означает что это не обязательное значение.
источник

AP

Alexey Pan in JavaScript.Ninja
Т.е. в вашем случае удали вопрос там где переменная должна быть обязательной
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Я думаю что тут вопрос в том что может и не быть.
Полный вариант будет через объединение типов.
Второй тип такой же, но с обязательными полями
источник

RM

Ruslan Mortikov in JavaScript.Ninja
Здесь посто есть зависимость. Если uuid пришел, значит пришли и serial и uptime. А если uuid - нет, то значит и других параметров тоже нет.
источник

DP

Dmytro Petunenko in JavaScript.Ninja
А структура объекта такая же или его нет вовсе?
Если нет вовсе то типы без вопросительных знаков и использовать как Response | null
Можно в отдельный тип записать
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Почти что монада Maybe 😜
источник

AP

Alexey Pan in JavaScript.Ninja
Dmytro Petunenko
А структура объекта такая же или его нет вовсе?
Если нет вовсе то типы без вопросительных знаков и использовать как Response | null
Можно в отдельный тип записать
Типы в интерфейсе ничего не знают про условия. В вашем случае используйте Тип. Как это написал @dimkabuki
источник

AP

Alexey Pan in JavaScript.Ninja
Черт, не то соопчение прикрепил =)
источник

S

Sergey in JavaScript.Ninja
Ruslan Mortikov
День добрый, может кто знает, Typescript

interface Response {
 uuid?: string;
 serial?: number;
 uptime?: number;
}


У меня ситуация, что если uuid есть, то seraial и uptime тоже 100% есть. Как это сказать Typescript’у?
Выглядит как функция валидации, которая не зависима от языка (JS или TS). Можно ещё посмотреть в сторону конструктора и там делать эту проверку
источник

RM

Ruslan Mortikov in JavaScript.Ninja
Не полностью раскрыл проблему. Это сообщения прилетающие по сокетам. Они имеют разно наполнение. Условно можно моделить на 3 типа сообщений
{ auth: ‘accepted’ }
{ message: ‘hello world’ }
{ uiid: ‘123’, serial: 123, uptime: 22 } - в этом сообщение больше 20 параметров, сократил для удобства

И что бы не проверять каждый параметр на наличии, нужно понять какой тип сообщения пришел, если с auth и message все просто, то с последним тиипом посложнее.

interface Response {
 uuid?: string;
 serial?: number;
 uptime?: number;
 error?: string;
 auth?: string;
}
источник

СЗ

Сергей Зинченко... in JavaScript.Ninja
Привет. Подскажите есть ли вариант трансформации числа к примеру "10" в svg obj. через JS?
источник

RM

Ruslan Mortikov in JavaScript.Ninja
Спасибо за помощь, попробую с типами поколдовать.
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Если правильно понял то error и auth не обязательные. Если так то их через елвиса(вопросительный знак) и юнион с первым типом респонса
источник

.

. in JavaScript.Ninja
вопрос вот прямо не даёт покоя мне: что происходит с переменными из (.env) когда мы делаем статичную сборку (yarn build)?
источник

IK

Illya Klymov in JavaScript.Ninja
Они вставляются в билд
источник

IK

Illya Klymov in JavaScript.Ninja
Те которые настроены в соответствующем плагине вебпака
источник

IK

Illya Klymov in JavaScript.Ninja
Остальные исчезают - на то они и переменные ОКРУЖЕНИЯ
источник

.

. in JavaScript.Ninja
спасибо большое
источник
2020 August 08

SK

Sergey Kostyrko in JavaScript.Ninja
Ruslan Mortikov
Не полностью раскрыл проблему. Это сообщения прилетающие по сокетам. Они имеют разно наполнение. Условно можно моделить на 3 типа сообщений
{ auth: ‘accepted’ }
{ message: ‘hello world’ }
{ uiid: ‘123’, serial: 123, uptime: 22 } - в этом сообщение больше 20 параметров, сократил для удобства

И что бы не проверять каждый параметр на наличии, нужно понять какой тип сообщения пришел, если с auth и message все просто, то с последним тиипом посложнее.

interface Response {
 uuid?: string;
 serial?: number;
 uptime?: number;
 error?: string;
 auth?: string;
}
Это можно сделать через discriminated unions - https://basarat.gitbook.io/typescript/type-system/discriminated-unions
источник
2020 August 09

EN

El Nasurov in JavaScript.Ninja
Вcем привет, такой вопрос -  в проектах, должен ли фронт всецело доверять ответам, которые задокументированы в описании api метода ? Или же он обязан у себя перед обработкой ответа от бэка проверить, что ему пришел ожидаемый формат данных и только при успешной проверке формата ответа выполнять какую-то логику с ним, а, если формат хоть немного отличается от задокументированного, то считать его "ошибочным" и, например, отображать заглушку какую-нибудь (аля произошла ошибка при получении данных") ?


Например.
Есть метод get-user-info. В api-документации описано, что при  успешном ответе, возвращается объект с  фамилией, именем и отчеством. Необходимо ли делать что-то типа такой проверки (в данном кейсе можно проверять, что ответом является объект, содержащий три строчки: фамилия, имя и отчество):
try {
 const  { data  } = await Axios.get(GET_FIO);
 if (isValidResponse(data)) {
   //логика обработки в случае ожидаемого формата респонса
 } else throw new Error();
} catch (e) {
 //логика обработки ошибочного запроса (статус не равен 2xx) и если не прошел isValidResponse
}
источник