Size: a a a

JavaScript.Ninja

2021 April 26

M

Michael in JavaScript.Ninja
А где можно почитать про всплывание и перформанс?
источник

M

Michael in JavaScript.Ninja
А то не совсем понимаю что значит всплывать
источник

Д

Дима 🎈 in JavaScript.Ninja
Совет ильи простой и рабочий. Все помниают, что Error это ошибка. Легко понять что за обьект перед тобой. Легко засунуть метаданыне в этот объект. Ну и это просто идиоматичный жс.
источник

Д

Дима 🎈 in JavaScript.Ninja
Эксепшены =.goto.
источник

M

Michael in JavaScript.Ninja
Уфф, вижу как мало я знаю
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Общее правило гласит, что если убрать все исключения то приложение должно работать, если вы завязывание логику приложения на исключения, то вы делаете не совсем правильно.
Выкидывание исключения с последующим отловом их в try catch "где-то там вверху" это большие проблемы дебага в будущем.
По своему опыту. Даже относительно небольшую функциональность (лямбду) было сложно развивать и отлаживать пока не переписал на ошибки
источник

M

Michael in JavaScript.Ninja
Через return new Error тогда не надо никакие try…catch?
источник

M

Michael in JavaScript.Ninja
и что вообще тогда с ошибкой делать?
источник

M

Michael in JavaScript.Ninja
Как ее обрабатывать
источник

M

Michael in JavaScript.Ninja
Подскажите, нормально?

  private async _request<T>(request: RequestInfo): Promise<HttpResponse<T> | Error> {
   const token = window.kc?.token
   if (!token) return new Error('No token')
   const response: HttpResponse<T> = await fetch(request, {
     headers: {
       Authorization: `Bearer ${token}`,
     },
   });
   response.parsedBody = await response.json();

   if (!response.ok) return new Error(response.statusText);
   return response;
источник

D

Damir in JavaScript.Ninja
а сразу в нужную папку билдить нельзя разве?
источник

С

Сергей in JavaScript.Ninja
Без Eject нельзя же
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Как по мне то вполне, форматирование не комментирую )
> Что делать с ошибкой,
Jжидать ее и реагировать
Можно еще сделать отдельные экземпляры ошибок для разных кейсов, тогда совсем проще их разбирать и отслеживать
С тайпскриптом так вообще можно делать контракты на ошибки и использовать их в разных частях системы
Кстати вспомнил весьма хорошее видео по монадам, оно конечно не по джаваскрипту но мне понимание дало весьма хорошее почему монады это ошибки вместо трай кэтчев это хорошо.
https://vimeo.com/113707214
источник

M

Michael in JavaScript.Ninja
То есть я делаю что-то типа

function fetchSomeData() {
   const result = request(…)
   if (result instanceOf Error) {
     // handle error
   } else {
      // do snth else
   }
источник

M

Michael in JavaScript.Ninja
И можно, пожалуйста, поподробнее про контракты в тс?
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Ту часть кода за которую вы не можете нести ответсвенности, скажем драйвер базы данных можно и трай кетч обернуть а в кетч просто возвращать ошибку. Таким образом вы конечно сглатываете ее, но если знаете что делаете и скажем так интерфейс ответа вас устраивает, то вполне валидно
Про контракты просто - вы "договариваетесь" в одном месте про структуру того или иного объекта и потом используете ее и в некотором смысле доверяете ей в других частях системы
такой договор и есть контракт и это может быть например интерфейс на ТС
Простой пример, у нас есть графкуель, мы генерим из схемы типы ТС и используем их и на беке и на клиенте в реакте что бы контролировать правильность использования кода. Такие генерированные типы это контракт что клиент будет отсылать определенные данные а сервер на них реагировать
Но не забываете что ТС это не очень то надежно, поэтому критические или чувствительные данные все же нужно валидировать на сервере в любом случае
источник

M

Michael in JavaScript.Ninja
Ух, спасибо за развернутый ответ) Не сказал бы, что сильно понял, но буду штурмовать. К сожалению все статьи, что я нахожу по error handling in js рассказывают про выкидывание ошибок…
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Да не за что, это совсем не развернутый ответ
Статьи да, не очень пока что. Над этим кстати как раз Тимур Шемсединов трудится, что бы улучшить качество материалов по JS за что ему огромное спасибо
источник

M

Michael in JavaScript.Ninja
Просто если коллеги спросят, надо найти какую-то авторитетную статью чтобы ссылаться
источник

DP

Dmytro Petunenko in JavaScript.Ninja
К сожалению у нас сейчас больше верят статьям чем каким либо доводам... 😔
Был реальный случай когда один разработчик написал статью на медиум что бы продвинуть свою идею )
Что тоже вариант кстати 😏
источник