HowProgrammingWorks - JavaScript and Node.js Programming
6.27K subscribers
344 photos
9 videos
1 file
860 links
Программная инжененрия для JavaScript, TypeScrip, Node.js
👉 Group: https://t.me/How_Programming_Works
👉 Node.js channel: https://t.me/metarhia
👉 Node.js group: https://t.me/nodeua
Download Telegram
💡 Как должен выглядеть стектрейс с AggregateError + cause

В примеры кода добавлена обработка ошибок: ООП, ФП, прототипного, реактивного и других стилей.

AggregateError: Validation
at validatePoint (/monad-result.js:82:20)
at Monad.chain (/monad-result.js:21:12)
at Object.<anonymous> (/monad-result.js:93:43)
[errors]: [
TypeError: Invalid x: NaN
at validatePoint (/monad-result.js:79:40)
at Monad.chain (/monad-result.js:21:12)
at Object.<anonymous> (/monad-result.js:93:43)
TypeError: Invalid y: false
at validatePoint (/monad-result.js:80:40)
at Monad.chain (/monad-result.js:21:12)
at Object.<anonymous> (/monad-result.js:93:43)
]
}


- Тут валидация выдает не только первую ошибку, но все, которые может найти, а значит, не нужно запускать код или его тесты много раз, исправляя ошибки по очереди
- Благодаря ФП и Result тут вся программа доходит до конца, выдавая максимум ошибок, не вылетая на первой же
- Обработка ошибок не требует кучи if-else в прикладном коде, все ветвление скрыто
- Стек-трейс вложенный, но простой и понятный

Обработка ошибок добавлена почти во все стили, это просто пример на ФП, но загляните, то же реализовано на ООП и других парадигмах и стилях.

Code: https://github.com/HowProgrammingWorks/Paradigms/blob/main/JavaScript/monad-result.js
👍12🔥42
То, что Promis не монада, это общеизвестно, но нашлись люди, которые говорят, что Array монада, и что из Thenable нельзя сделать монаду, здесь доказательство про Thenable, о про Array даже говорить нет нужды, ну я надеюсь, что это очевидно... или нет? https://github.com/HowProgrammingWorks/Thenable/blob/master/JavaScript/b-monad.js
5👍3💯1