Илья Климов - «Строгий» JavaScript: типы против реальности
HTML-код
- Опубликовано: 21 ноя 2017
- Ближайшая конференция - HolyJS 2024 Autumn, 7 ноября (online), 14-15 ноября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/K18Cxd
- -
. . Строгая типизация: серебряная пуля или маркетинговый ход? Этот доклад - история о том, как небольшая компания год писала «типизированный JS» и что из этого вышло. Личный опыт войны с типизацией, какие проблемы возникли на пути «перехода», какую ценность (и с позиции разработки, и с позиции бизнеса) это принесло, и когда стоит об этом беспокоиться.
В докладе немного затронем TypeScript (в основном отвечая на вопрос «почему не он») и сконцентрируемся вокруг FlowType и его экосистемы - чтобы понять, «зачем нам еще один TypeScript», куда движется сообщество «типизаторов» и зачем к нему присоединяться. Наука
2017: 45:44
2020 (почти 2021):
Facebook не переписал весь фронтенд на Reason
Господи, что случилось с человеком на 47:51?
Сыграл в Траволту
ахахахахахах
Он воюет в Украине
35:17 разве там не шаблонная функция? разве не надо было написать promisify(track) и тогда Input и Output был бы определен?
Боже клоун, ну иди в своем проекте это делай
Я, конечно, нуб. Просто хочу сказать, что эти все умные люди делают жизнь больнее своими удобными изобретениями. Запутали просто до краю.
200 метров жабаскрипта грузят текста 300 байт...
Он герой Харькова
Теперь понятно почему Илья закрыл свою компанию и ушел в gitlab.
Выбрал маргинальный Flow вместо перспективного TS
Шел 2021 год. Строгая типизация все еще не победила. Возможно строгое заявление "Все понимают необходимость строгой типизации" не такое уж и строгое? Есть разные ситуации.
Парнишка няшка конечно, но лично для себя вывода два:
1. Не возвращаться в ООП и статику хоть Дарт, хоть флоу хоть TS там как и в джаве 20 лет назад все те же три сосны на которых проще повеситься чем найти адекватное решение.
2. Не связываться с легаси и аутсорсом даже от Майкрософт )
В NPM CDN мегатонны разрозненного JS кода и как-то все это умудряется взаимоиспользоваться пусть и с танцами с бубном но всетаки менее затратными по времени чем вечные спотыки в ООП статике
Поделюсь и своим евангелием на этот счет:
ООП и объектная модель это не для прототипирования, вы "отливаете" в "чугуне" ООП то что собралось на войну и надолго.
Но в миное время на конкурентном рынке творческого общества ООПу место чисто утилитарное, гдето в ДОМ и т.п. базовых структурах но не в реале повседневного кодинга конечных задач!
ООП-щики конечно накидают сейчас, но обратите внимание на начало лекции? - "Строгая типизация это ого-го!" (мы правда не скажем ничего предметного но вы ведь и так понимаете что все эти обезьяны от процедурной функциональщины не настоящие кодеры)
А я вот третий год живу практически без автоподстановки и о чудо вообще никак не испытываю неудобств!
Тоесть ее как-то там можно было поднастроить, но все руки не доходили да так и не дошли. И кстати в 5 прошлых java-лет эта пресвятая автоподстановка не спасла, хоть и убедительно делала вид что может!
Мне кажется не стоит смешивать ООП и статическую типизацию. Можно писать на TS и без ООП
Перефразируя классиков, "js помогает элегантно решать проблемы, которые без js вообще бы не возникли" (с)
Вначале выбираем неподходящую говнотехнологию, которая позволяет писать говнокод, потом тыкаем кучу костылей, которые помогают с этим жить. А потом долго и нужно размышляем, какой тип костылей круче всего.
"неподходящая говнотехнология"? это ты про JS? Подожди, а какая технология, по-твоему, подходящая для написания фронтэнда?
тоже самое можно сказа про похапэ
ты погубил свою репутацию !
Почему?
Решил запустить в песочнице пример с собаками и кошками (TS 2.7)
Косяка, показанного в видео нет. Видимо, пофиксили в новой версии.
Не-а, пример все еще воспроизводится в 2.8: bit.ly/2JyBEJ5
парень просто разорвал
Ахуенный доклад
Кто нибудь мне пояснит, почему 25:53 флоу молчит, мы же в функицю log() должны передавать строку, а передаем объект, а ошибки нет.
Мы и передаем строку id. Конструкция const { id } = entity; ложит в константу id параметер id из объекта entity. Как если бы мы написали const id = entity.id;
@@dmanokhinj Вообще странно что флоу здесь дает ошибку. Мы же как раз строку передаем. Какая разница измениться она или нет? В объекте останется в любом случае та же строка что и была.
@@kaifaty плюсую, тоже этого не понял
Во flow написал тип, в ts не написал, и тайпскрипт кривой, ага
18:34
Нуба вопрос. Почему сразу не создавать массив Animal без присваивания ссылки массива Dogs ? Это же как ставить точку с запятой в конце. Просто делать сразу нормально. Что не так ?
Потому что парню захотелось профорсить Flow. В реальной жизни, такого рода проблемы с TS встречаются в 1 случае из тысячи.
Я так понял, он там просто объяснить хотел различия подходов.
Та ситуация надумана и просто решается тем, что animals: Dog[] и вы не сможете добавлять туда кошек, либо по месту использования дописать аннотацию (... as Animal[]).
Т.е. он пытается предъявлять претензии к *неявному* поведению TypeScript. И типа ему надо самому помогать и указывать более жесткие рамки)
@@ecroFeGushKa, Согласен, так никто не пишет. Решил поработать с нетипизированным массивом - отгребай)
@@ecroFeGushKa уф, спасибо твоему каналу. В один момент моей жизни помог понять редакс
где мой JavaScript7
а какой шрифт в редакторе?
Какой удобный автору - логично
Это платный какой-то, он говорил на трансляции.
похож на Pragmata Pro
Почему докладчики так любят вот это "Поднимите руки кто ...? А теперь поднимите руки кто ....? Ага, понятно..." Сомневаюсь что докладчик по этой статистике будет менять презентацию или объем информации, которую подает.
Это вовлечение аудитории. Так люди лучше воспринимают и запоминают материал.
Вполне можно поменять структуру доклада на ходу. Если никто не поднимет руку на вопросе "кто пишет на TS", то можно больше времени посвятить вводной части о предмете доклада.
Он сейчас защищает Харьков
Докладчик не умеет в ковариантность\контрвариантость. В первом сравнении с собаками и кошками Флоу отвалится на той же строчке, если убрать все что под ней. И причина здесь вовсе не каком-то там лютом графе вывода типа.
(Субъективное мнение) Мда, сказали о Dart, как о отдельном языке и что там уже все давно реализовано, но применять его мы не будем, а будем мы применять Reason. Безумное JS коммьюнити.
Это ведь объясняется тем, что найти программиста, который будет писать на дарте гораздо сложнее.
Хватит употреблять словосочетание ВОФЛОУ