TypeScript-2014
Sep. 12th, 2014 11:02 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Тайпскрипту скоро исполняется два года (если считать с первого публичного релиза).
Появилась инфраструктура, то-сё. Ну и в общем - да, он работает. Позволяет лопатить неслабые количества JS-кода в одиночку и в команде, и отлично интегрируется с существующей лапшой. Хотя есть нюансы.
1. Поддержки IDE как не было, так и нет :) Ну то есть Sublime Text рулит, бибикает и бегает кругами как вокруг Visual Studio, так и вокруг JetBrains WebStorm'a. Потому что студиевский typescript language service тормозит и виснет, а вебштормовский, ммм, существенно быстрее, но при этом выводит типы неправильно, ну и толку с него такого? :)
2. Сложившееся комьюнити с DefinitelyTyped, скажем так, странное. Дефинишны тоже очень разного качества и разных парадигм. Но и на том спасибо.
3. Собственно, если код использует "только cjs модули" + какой-нибудь browserify (мы сделали свой велосипед, впрочем) - всё зашибись. Или если "только лапша из скрипт-тэгов", то тоже отлично работает.
А если смешивать - то области видимости тоже психоделически смешиваются, и править код становится неудобно, на малейший чих куча ошибок при компиляции. Хотя, с другой стороны, ну логично же.
А, да, чего я это пишу. Наконец-то придумали convention, как нормально раздельно компилить пакаджи, чтобы результат можно было npm install, и подключенные пакаджи продолжали типизированно линковаться с их пользователями. Почти автомагически (тайпинги генерятся сами, плюс обертка которая правильно ремапит их в cjs). Очень радует.
Ну то есть еще чуть-чуть, и в JS появится нормальное понятие "deployment unit" (aka CLR "assembly"), которую можно подключить и быть более-менее уверенным, что если интерфейс поменяется - то это будет видно сразу при компиляции, и для этого не надо каждый раз лопатить компилятором мегабайты файлов, а достаточно просто проматчить type definitions (.d.ts)
Такое вот.
Появилась инфраструктура, то-сё. Ну и в общем - да, он работает. Позволяет лопатить неслабые количества JS-кода в одиночку и в команде, и отлично интегрируется с существующей лапшой. Хотя есть нюансы.
1. Поддержки IDE как не было, так и нет :) Ну то есть Sublime Text рулит, бибикает и бегает кругами как вокруг Visual Studio, так и вокруг JetBrains WebStorm'a. Потому что студиевский typescript language service тормозит и виснет, а вебштормовский, ммм, существенно быстрее, но при этом выводит типы неправильно, ну и толку с него такого? :)
2. Сложившееся комьюнити с DefinitelyTyped, скажем так, странное. Дефинишны тоже очень разного качества и разных парадигм. Но и на том спасибо.
3. Собственно, если код использует "только cjs модули" + какой-нибудь browserify (мы сделали свой велосипед, впрочем) - всё зашибись. Или если "только лапша из скрипт-тэгов", то тоже отлично работает.
А если смешивать - то области видимости тоже психоделически смешиваются, и править код становится неудобно, на малейший чих куча ошибок при компиляции. Хотя, с другой стороны, ну логично же.
А, да, чего я это пишу. Наконец-то придумали convention, как нормально раздельно компилить пакаджи, чтобы результат можно было npm install, и подключенные пакаджи продолжали типизированно линковаться с их пользователями. Почти автомагически (тайпинги генерятся сами, плюс обертка которая правильно ремапит их в cjs). Очень радует.
Ну то есть еще чуть-чуть, и в JS появится нормальное понятие "deployment unit" (aka CLR "assembly"), которую можно подключить и быть более-менее уверенным, что если интерфейс поменяется - то это будет видно сразу при компиляции, и для этого не надо каждый раз лопатить компилятором мегабайты файлов, а достаточно просто проматчить type definitions (.d.ts)
Такое вот.