Size: a a a

2020 October 11

D

Danila in pro.js
В каждой божьей функции
источник

D

Danila in pro.js
Пока в Виллабаджо все еще описывают типы и интерфейсы в сорцах тса, в Вилларибо уже написали логику и дописывают тесты.
То есть, каждая твоя функция сначала приводит инпуты к нужным типам, потом проверяет, что все ок?
источник

D

Danila in pro.js
И кидает эксепшены если чо
источник

D

Danila in pro.js
Не понимат
источник

D

Danila in pro.js
Это же гораздо дороже, чем описать тип в тс
источник

in pro.js
Danila
В каждой божьей функции
А ты еще и пишешь код, в котором экспортируется каждая божья функция?
источник

D

Danila in pro.js
А ты еще и пишешь код, в котором экспортируется каждая божья функция?
Так приводишь, проверяешь и кидаешь?
источник

in pro.js
Danila
Так приводишь, проверяешь и кидаешь?
Тот инпут, который мне приходит извне, обязательно привожу, проверяю и кидаю. Иначе быть и не должно.

А то, что у меня локально  - уже все приведено и валидировано. И тут документаций и архитектуры с сервисами такого размера, чтобы не было сложности, когда без тонны дополнительной метаинформации не обойтись, вполне достаточно.
источник

D

Danila in pro.js
Тот инпут, который мне приходит извне, обязательно привожу, проверяю и кидаю. Иначе быть и не должно.

А то, что у меня локально  - уже все приведено и валидировано. И тут документаций и архитектуры с сервисами такого размера, чтобы не было сложности, когда без тонны дополнительной метаинформации не обойтись, вполне достаточно.
Что такое локально и что такое извне?
источник

D

Danila in pro.js
От другого кода - извне?
источник

in pro.js
Danila
Что такое локально и что такое извне?
Валидируется ввод из I/O и ввод в функциях, которые экспортируются за пределы модуля.
источник

in pro.js
Если у меня есть модуль, рисующий на какую-то очень сложную анимацию с миллионом полигонов, и состоящий из десятка другого различных функций и структур, но экспортирующий только draw, я провалидирую то, что прилетает в этот draw, а в пределах модуля, я буду опираться на именование, декомпозицию, достаточную арность (а не 5-6 аргументов), и прочие ништяки чистого кода.
источник

in pro.js
Danila
Если я пишу ТС-библиотеку, то я подразумеваю, что она юзается в ТС

Кроме "данных извне" есть ещё и работа частей кода между собой. И кто-то может не касаться ввода вообще, а получать его уже отвалидированый из другой части системы/с другого уровня, например. И вот в этом взаимодействии описание типов и следующая из этого самодокументированность позволяет
1) Повысить DX
2) Обезопаситься от ошибок времени разработки - если ты передал не то и не туда, твой код просто не скомпилируется.
3) То же относится и к библиотекам. Если они на ТС и для ТС - проверять ничего не нужно, код просто не соберётся, даже если увидит, что ты передаешь any туда, где нужно что-то конкретное
4) Чем больше, длиннее и шире проект и чем больше людей над ним работают, тем это важнее

И самое во всём это важное, с моей точки зрения (и в чём был изначальный поинт) - это не стоит ничего. Ноль рублей ноль копеек. Просто пишешь тип не в жсдоке, а ближе к самому коду и всё просто работает.
Ты же отдаешь себе отчет в том, что клиентский код может модифицироваться на этом самом клиенте. И в случае, если какое-нибудь расширение браузера, пользователю модифициурет рантайм таким образом, что твой код, начинает стрелять куда попало, вместо того, чтобы как-то осмысленно упасть, а в идеале еще этого пользователя и уведомить, что что-то пошло не так, то поведение вовсе может быть непредсказуемо. Начиная с того, что даже воспроизвести ошибку ты не сможешь, потому что не поймешь откуда она, логовжинет.  Зато все скомпилировалось, без ошибок, да.
источник

in pro.js
Я никак не осуждаю использование ТС, я прекрасно понимаю причины по которым эти инструменты появились. Ровно как и те самые заборы вдоль газонов. Не стоит думать, что я какой-нибудь фанатик. Я прагматик. И тому чуваку-каргокультисту с его мантрой статикопоехавших - "сынок, а работал ли ты на проектах больше, чем из пяти файлов" - работал даже на из десяти с половиной.  Я люблю динамическое и мета программирование, я его понимаю, я его умею. И то, что многие не умеют, тоже понимаю. Куда там без тайпчека в компайлтайме, линтеров и прочих радостей, когда мы даже с оператором == совладать не можем.

Я тут спорил не с тем, что тс не нужен. Я спорил с тем - что нет ни одной причины его не использовать. Причин масса. Как и причин использовать. Всему свое место. Но не каждое место всему.

Ладно, на этой ноте я ретируюсь. Развлекайтесь, разработчики.
источник

R

Roman in pro.js
Я никак не осуждаю использование ТС, я прекрасно понимаю причины по которым эти инструменты появились. Ровно как и те самые заборы вдоль газонов. Не стоит думать, что я какой-нибудь фанатик. Я прагматик. И тому чуваку-каргокультисту с его мантрой статикопоехавших - "сынок, а работал ли ты на проектах больше, чем из пяти файлов" - работал даже на из десяти с половиной.  Я люблю динамическое и мета программирование, я его понимаю, я его умею. И то, что многие не умеют, тоже понимаю. Куда там без тайпчека в компайлтайме, линтеров и прочих радостей, когда мы даже с оператором == совладать не можем.

Я тут спорил не с тем, что тс не нужен. Я спорил с тем - что нет ни одной причины его не использовать. Причин масса. Как и причин использовать. Всему свое место. Но не каждое место всему.

Ладно, на этой ноте я ретируюсь. Развлекайтесь, разработчики.
что там в кратце?
источник

R

Roman in pro.js
влом забор текста читать
источник

t

th.witness in pro.js
Roman
влом забор текста читать
Не читай 🤔
источник

R

Roman in pro.js
th.witness
Не читай 🤔
я не читал
источник

t

th.witness in pro.js
Roman
что там в кратце?
Он ретировался.
источник

R

Roman in pro.js
жду когда автор выжимку сбросит
источник