Формат | Размер | Скачать |
---|
Название | : | |
Продолжительность | : | |
Пользователь | : | id 793288641471 |
Дата публикации | : | ript src= |
Просмотры | : | layer\/9383995e\/www-embed-player.vflset\/www-embed-player.js |
Понравилось | : | 1,268 |
Не понравилось | : | 68 |
На сегодня проект закрыт. Артём, спасибо за попытку сделать лучше 👍🏼 Комментарий от : @pick-pock |
Пример #1 на ts V 4.9 пофикшен уже выводится number | undefined, пример с id очень легко типизировать через шаблон ```const id = <T>(x: T): T => x;```, проблемы связанные со структурной типизацией решаются брендированием Комментарий от : @dmitry4337 |
такие доклады очень круты - выявляют проблемные места распиареных технологий. не всё так гладко в мире TS. Комментарий от : @user-fg6ng7ej6w |
А как без проверки типов в рантайме валидировать/типизировать приходящие с сервера данные? Комментарий от : @jeststk3257 |
Очень крутая идея! С интересом слежу за вашим проектом. Но до успеха ему, в лучшем случае, лет 4-5 нужно будет. Как финансируется проект? Или это хобби проект на энтузиазме? Если вы читаете .d.ts файлы - как обрабатываются их Typescript типы, например тот же any? Комментарий от : @mephistotel87 |
В общем, перед сном решил для протокола разобрать примеры автора - godbolt.org/z/NDLy1c Очевидно, что сравнения с растом не получилось - это дерьмо не может ни во что. Там я привёл пару пруфвов против тезисов автора(там на тему вывода типов в расте для лямбд). Этого будет достаточно. Посмотрим на ответы автора. Комментарий от : @rustonelove |
Давайте не будем спорить. Лучше поговорим о типизации. Вы там хотели доказательств того, почему система типов раста говно - вот показываю пример, о котором я уже множество раз говорил. Берём кресты: godbolt.org/z/sRmWZv Я даже не буду говорить о какой-то там выразительности и том, что это бездарное дерьмо никогда не сможет в подобное. Сейчас не об этом. Хотя выразительность в данном случае так же обусловлена системой типов и её мощностью, но то тоже ладно. Проблема здесь следующая. С++ знает, что есть несколько типов трансформаций и несколько типов контейнеров. Вектор является RA-контейнером. Если мы применим к нему трансформацию, которая сохраняет RA - оно будет работать. transform - это ваш map. А вот фильтр не сохраняет RA и после нельзя применить [], которые подразумевают RA. RA в данном случае - random access, т.е. доступ по индексу за O(1). У вас была примитивная вариация такого подхода - это пример с model. Дак вот - раст в такое не может. Там нету вывода типов. И пародия на них в лябмдах никак не помогает, потому как это не С++/js-лямбды и их применение крайне ограничено. Да даже в C++ применение лямбд ограничено, как и в js. Комментарий от : @rustonelove |
38:40 - никакого подхода раста не существует. Ну ведь автор ничего не знает про раст и типизацию - зачем он пользуется тем, что его ЦА не знает ещё больше? Раст на 90% состоит из динамического диспатча как по интерфейсам так и по юнионам. Для того, что-бы такое делать - нужно знать типы в рантайме. Тоже самое пусть автор погуглит про std::any, typeid и прочее. Либо почитает про С++ откуда всё это было взято. В любом случае раст никакого отношения к языком "полностью типизированным" не относится. Типизация там хуже, чем в TS. 38:50 - можно. Но это не про раст и не про js. 39:35 - как хорошо быть жертвой пропаганды. Ничего не знает, но экспертно заявляет. В расте всё это есть. И null pointer и какой угодно поинтер. И к системе типов это не имеет никакого отношения. 39:40 - невежество в массы. Никаких null pointer exception в С++ нет и быть не может. Автор перепутал с жавой. И к типизации это не имеет никакого отношения. Это как деление на ноль. Или ещё любая другая рантайм-ошибка. Которая никак не обрабатывается убогой системой типов автора. И аналогичной оной системой типов раста. 39:45 - хорошая система и проверка типов? В расте? Ну про жертву пропаганды я уже говорил. 39:46 - всё что нужно знать об данном эксперте. Раст уже не нормальный язык, потому как там есть any. Как же так? Комментарий от : @rustonelove |
31:40 - пошла жара. TS действительно имеет проблему, но она там взялась не из-за того, что авторы TS идиоты. Структурная типизация даёт множество фишек, а в замен даёт одну проблему. И из этого никак не следует, что решение плохое и его нужно поменять. Просто нужно добавить хинт. Но, автор опять пытается всех обмануть. Его примитивная система типов не способна дать то, что может дать TS. И она попросту убога. Но что же он говорит? Он говорит, что так и нужно. Нужно убого. Он опять пытается выдать слабость за фичу. 32:10 - враньё переходит уже все границы. Автор показывает некую особенно TS и говорит "нельзя" и вы думаете, что действительно нельзя. Но всё можно - id<T>(x: T) {return x;}. Причём это не является проблемой, потому как если функция будет объявлена в контексте, где уже описана её сигнатура - она возьмёт сигнатуру из контекста. А если ты вне контекста хочешь создать генерик-функцию - объяви это явно. Это поведение обусловлено совместимостью с js. 34:15 - это не зависимые типы. К тому же, сразу видно костыли убогой системы типов. Для получения каких-либо трансформаций типов убогой систему типов нужна магия. Нормальной же системе типов - нет. И лучше бы он нам показал как реализована его магия. Ну и по поводу TS - враньё - вот пруф: bit.ly/3ffQFzR Комментарий от : @rustonelove |
29:45 - пошло враньё. Автор здесь пытается вам обмануть, а именно выдать убогость своего вывода типов за фичу. Если проще - то, что здесь показано - это не слабость TS - это специальные фичи, которые расширяют типизацию. А автор показывая вам своё изваяние называет дефолтное поведение фичёй. Строгость типизации никак не относится к явно. Когда вам говорят обратное - вас пытаются обмануть. Задача типизации полностью покрыть рантайм-логику. И если в рантайм-логике этот неявный каст существует - он должен быть описан на уровне типов. Автор же просто не осилил и решил выдать слабость за фичу. Это очень просто проверяется - почему же он не показал ОШИБКИ, которые допустим ts неявными кастами? Правильно, потому что их нет. 29:56 - А далее автор опять пытается всех обмануть. То, что твоя примитивная система описания типов не позволяет учитывать неявные трансформации типов - это проблема твоей типизации(убогой). И автор убогость выдаёт за фишку. 30:30 - это позор. Автор просто начал манипулировать. Следим за руками. Контекст у нас "различия между моим и ТС" и тут бам - он показывает что-то. И мы должны думать, что в TS всё не так. Но нет - там всё так же. И зачем этот пример привёл автор? 30:46 - здесь автор совсем поломался. js скриптуха и никак не может быть полностью типизирован, потому как типы в нём вторичны. По этой причине все рантайм-проверки не должны учитывать типизацию - это базовое правило. Авторы TS его осилил, а данный эксперт нет. Да, оно бесполезно. Комментарий от : @rustonelove |
Меня не перестаёт удивлять то как веб-гении с ничтожными познаниями берутся рассуждать о расте, С++. Понимаю, что там с тебя никто не спросит, но всё же. 9:58 - C++ не имеет вывода типов в твоём понимании. Типизация в С++ - это совершенно другая реальность, которая настолько сильно превосходит всё, что ты знаешь. 10:00 - никакого вывода типов в расте нет. Как же эпично обманул вас этот эксперт. В расте есть вывод типов(ну как вывод - огрызок для примитивных кейсов) только для лябд. 10:02 - типы не проаннотированы и в С++. Пациент либо не знает, либо в очередной раз пытается вас обмануть. Дело в том, что в C++ auto - это не только типовая аннотация. Это ещё и признак декларации. И везде он используется именно как признак декларации - как аннотация он не имеет смысла. И о чудо, если мы уберём эту аннотацию - мы потеряем признак декларации. И это решается костылём let, которого нет в С++. А let - это говно, по определению. Причина тому проста. Признаком декларации в С++ является любая аннотация, а не только auto. И если мы желаем написать string x; - мы там и пишем. В костыльном let-говне мы так не можем. Мы обязаны оставить let и получить let x: string. Комментарий от : @rustonelove |
Сколько раз он выпил водички в конце?))) Комментарий от : @vladikboldakov2901 |
Крутой чувак . Смотрел стримы как он разрабатывал этот типизатор . Комментарий от : @telychkomykola |
Это было очень круто, спасибо! Подписался, поддержу Комментарий от : @sergeyvolkov9061 |
Артём красава! Комментарий от : @Mazai58 |
По поводу youtu.be/GIHrPm_YAIc?t=209 - в C# и Java также будет ошибка во время рантайма, смотри gist.github.com/KvanTTT/e3d75635d67620e5769a96376b597516 И там точно индекс 2 имелся в виду, а не 1? Если массивы индексируются от 0, то ошибка возникнет до проверки типов, индекс вне диапазона. Комментарий от : @ivankochurkin1720 |
доклад можно было переименовать: "До чего доводит flow" Комментарий от : @dmitry7464 |
Не могу отделаться от ощущения что про статическую типизацию в JS мне рассказывает Лев Против >_<' Доклад отличный! Комментарий от : @rselivanov |
Ссылка на полезные ссылки из доклада github.com/JSMonk/hegel-literature Комментарий от : @dimontd |
Отличный инженерный подход, красавчик ! Комментарий от : @SuperArtgun |