Anton Soldatov
Сильверлайт
Anton Soldatov
Java serverlet че ещё
Александр
Сильверлайт
а вот это неплохая вещь была. Но ms как всегда с маркетингом налажали
Anton Soldatov
За то не налажали с TS
Anton Soldatov
К сожалению
Denis
К сожалению
А тебе он чем не угодил?
Александр
Мне еще экосистема windows mobile жутко нравилась, очень легко было приложения под нее писать. Уже давно универсальные приложухи были, которые и на телефоне и на компе запускались, но опять с маркетингом налажали
Anton Soldatov
Он защищает от стрельбы в ногу где ты видишь, что стреляешь, не защищает где сам не видишь и на сам язык даже спецификации нет - это пиздец
Anton Soldatov
За то есть куча агитированных товарищей
Александр
За то не налажали с TS
Да а чего там лажать? C# адаптировали под JS Точнее наоборот. Решили сделать из JS копию C#
Anton Soldatov
Полемика в итоге про ТС такая же что в России плохо, а на западе хорошо и никакие аргументы не помогут
Anton Soldatov
По моим впечатлениям :)
Anton Soldatov
https://www.typescriptlang.org/docs/ А тут что?
Документация != спецификация
Александр
Документация != спецификация
так она такая же как JS Это одно и тоже посути)
Anton Soldatov
Нет
Anton Soldatov
Вообще она не такая же
Anton Soldatov
Они там нарасширяли в два раза больше спецификации ecma
Denis
так она такая же как JS Это одно и тоже посути)
Только одна часть такая же но и то не такая
Александр
Всмысле нет? Он у тебя транспилируется в JS И механизмы все теже, только добавили нормальную типизацию и пару других фич и ооп)
Anton Soldatov
И это нигде не описано
Anton Soldatov
Где это утверждено как именно он транспилирует
Anton Soldatov
Не написано, а закреплено документативно:)
Anton Soldatov
Ты не можешь проверить, что он будет делать во всем интервале входных данных
Александр
Не написано, а закреплено документативно:)
ну вот например https://javascript.xgqfrms.xyz/pdfs/TypeScript%20Language%20Specification.pdf
Anton Soldatov
От 2022 найди
Александр
ООП я и на ES6 писал нехуево
так в том то и дело, ts делали тогда, когда es6 не было и как раз для того, чтобы на js можно было в нормальном ооп стиле с классами и типами писать)
Anton Soldatov
Или 2021 :)
Александр
а сейчас он и не нужен почти)
Александр
Это когда это?
ts появился в 2012 А es6 релизнулся только в 2015
Александр
Вот прогеры которые с C# переходилы на написание GUI под веб и ахренели немного от того, каким тогда js был)) Потому собственно TS и родился и я их могу понять. Я от тогдашнего JS тоже немного ахреневал))
Александр
Собственно добавление в es и в js синтаксического сахара в виде классов например и прочих привычных ооп вещей и начали обсуждать, тк появились запросы на это от классической разработки с применением ооп) Вот только JS это вообще дикая помесь ооп и функционального подхода) В целом js и так всегда был ооп языком, но просто всем было неудобно через прототипы все оформлять, привычнее было с классами работать. Один хрен, наследование осталось прототипным))
Александр
От 2022 найди
https://github.com/microsoft/TypeScript тут все есть) Спецификация врятли сильно изменилась) Да и просто некому ее поддерживать видимо в актуальном виде. К тому же базовая спецификация есть, в релизноты можно вот тут глянуть https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html
Anton Soldatov
Кроме того багтрек нормальный невозможно устроить без неё
Александр
Александр
Кроме того багтрек нормальный невозможно устроить без неё
Ок, пример из жизни плз, где понадобилась спецификация, чтобы баг оттречить)
Anton Soldatov
В общем я не для поспорить, если есть желание можешь погуглить указанные проблемы и сформировать мнение на основании полученной инфы
Anton Soldatov
Иначе
Александр
Я за практику работы с TS сталкивался только с кривым типизированием от разрабов,вот тогда это болью становилось)
Anton Soldatov
Мы не договоримся в моменте :)
Александр
Мы не договоримся в моменте :)
Да я просто про пример спросил, я себе пока представить не могу какие проблемы могут быть.
Anton Soldatov
На языке без актуальной спецификации
Anton Soldatov
Какие угодно
Александр
Они либо от чрезмерного усложнения, либо от криворукости по большей части. Например когда делают типизацию входного параметра функции ввиде объединения 100500 типов))
Anton Soldatov
Никогда не узнаешь
Denis
ts появился в 2012 А es6 релизнулся только в 2015
https://en.wikipedia.org/wiki/TypeScript#Release_history
Denis
TS унаследовал классы от ES6
Anton Soldatov
Ну к вопросу спецификации она от 2 версии, сейчас четвёртая
Александр
TS унаследовал классы от ES6
он унаследовал классы из спецификации, которая разрабатывалась раньше, чем es6 был в JS активно внедрен)
Александр
Я четко помню, что в TS они уже были, когда в JS - это достигалось только за счет babel)
Александр
Вот за первые релизы TS не отвечу. Я в 2012 еще не прогал на JS, Я еще в универе учился и прогал на с++ и C#
Александр
Так какая разница то babel или tsc
великая) принцип разработки на чистом JS даже с учетом нововведений отличается от разработки на TS
Александр
На TS проще применить классические паттерны проектирования, чем на чистом JS, хотя ограничений тоже много
Александр
Тк наследование в TS осталось прототипным как и в js(
Denis
Мне не нравится то, что он сыпет ошибки не там где надо, а там где надо пропускает.
Denis
Ну это нужно код открывать. Позже давай. Мне валить надо не надолго
Denis
Но у меня есть пример
Denis
Даже 2. Правда на один NDA на 50 лямов. Правда хохлам )))
Александр
Мне нравится TS по 2-м вещам 1. Типизация на этапе написания кода и подсказки по входным параметрам и структурам данных. Подсказки и ошибки по несовместимости типов 2. Унификация фронта и бека по типам данных за счет общих интерфейсов и типов
Александр
Например даж ci/cd можно настроить на поиск ошибок по не соответствию типов на фронте и беке) Есть общий пул интерфесов и типов и они не должны отличаться при передаче по сети. Если на фронте нужно тип дополнить, то будь добр создать наследника с новыми параметрами, что убережет от некоторого рода ошибок)
Александр
Кейс из жизни: фронт пилит новую страницу, в процессе добавил один атрибут и забыл сообщить об этом беку. Да и сам забыл, что добавил. JS по классике не ругнется на дополнительный атрибут, если на бек отправить. А вот если ci/cd на это настроить, то сервис просто не сбилдится и ругнется, что изменен интерфейс на фронте и нужно доработать его на беке)
Александр
Обратная ситуация такая же) Бек чето поменял и запушил. Билд не прошел и вывалились ошибки на несоответствие интерфейсов, соответственно создали сразу задачу для фронта на допиливание)
Александр
Блин, а что такое интерфейс в ТС? И чем он отличается от типа и от класса?
Я лучше вот так скину https://frontend-stuff.com/blog/types-vs-interfaces/
Denis
Мне не понятно отличие от класса
Александр
Мне не понятно отличие от класса
ну по аналогии с другими языками и сетевыми архитектурами, интерфейс используется для описания структуры объекта на основе которой могут быть созданы классы например.
Denis
Но из того, что я видел, в ТС интерфейсы и классы полностью взаимозаменяемы
Denis
А в других языках интерфейсы совсем иначе выглядят
Александр
Мне не понятно отличие от класса
давай как джаве это опишу interface - это по сути тип в джаве class - это тип с реализацией/имплементацией interface описывает структуру данных, а класс имеет и структуру и реализацию в видео конструктора, методов В TS та же идея Только с типами можно еще и магию делать в виде объединения, пересечения и тп