javascript

Создатель Ruby on Rails: «Turbo 8 отказывается от TypeScript»

  • суббота, 9 сентября 2023 г. в 00:00:17
https://habr.com/ru/articles/759826/

Контекст: Turbo — это как htmx, т.е. с идеей передачи html между бэкендом и фронтендом и управлением состоянием на бэкенде, но от создателя Basecamp (сервиса менеджмента проектов), HEY (email-сервиса) и фреймворка Ruby on Rails.
прим. перевод.

По общему мнению, TypeScript стал большим успехом для Microsoft. Я видел множество сияющих от радости людей, напичкавших JavaScript типами, которые могут быть проверены компилятором. Но я никогда не был его поклонником. Ни через пять минут размышлений, ни через пять лет. Поэтому я с большим удовольствием могу сообщить, что мы отказываемся от TypeScript в следующем большом выпуске Turbo 8.

Дело в том, что на самом деле мне очень нравится JavaScript. Я бы даже сказал, что это мой второй любимый язык после Ruby. Да, с большим отрывом, но всё же второй. Хотя так было не всегда. Но после того, как в JavaScript появились полноценные классы, а также все остальные улучшения после ES6, писать на нём стало по-настоящему приятно.

Я по-прежнему не считаю, что JavaScript хорошо подходит для большинства задач в серверной части «уравнения» веб-приложений, но вполне уважаю и ценю то, что другие считают по-другому. На мой взгляд, это просто наше счастье, что сейчас у нас есть такой способный JavaScript, который браузеры могут интерпретировать без всякой необходимости в компиляторе.

Для меня TypeScript только мешает этому. Не только потому, что он требует явного шага компиляции, но и потому, что он загрязняет код гимнастикой с типами, которая добавляет мне мало радости при разработке, а зачастую и много огорчений. То, что должно быть просто, становится сложно, а то, что сложно, становится any. Нет, спасибо!

Однако это не призыв переубедить кого-либо в чём-либо. Как я уже говорил в статье «Типы и образы мышления в программировании», очень немногие программисты обычно заинтересованы в том, чтобы их мнение о типизации изменилось. Большинство программистов в самом начале своей карьеры обнаруживают, что их либо сильно тянет к типизации, либо или не очень, а затем проводят остаток карьеры, рационализируя "правильный выбор" для себя и других.

В этом и состоит магия дихотомии JavaScript и TypeScript, и надо отдать должное разработчикам TypeScript за то, что они поняли: JavaScript не уйдёт, поэтому полная совместимость должна быть заложена с самого начала. То, что в Turbo 8 отказались от TypeScript, не означает, что вы не можете писать на нём свой клиентский код или использовать любую другую библиотеку, в которой он используется. Мы можем смешивать и сочетать, и это замечательно.

Это также необходимо. Потому что в отличие от таких языков, как Ruby, которые являются языками по выбору, когда речь идёт о серверной части, JavaScript — это язык необходимости (если не учитывать WebAssembly, прим. перевод.), когда речь идёт о клиентской части. Хотя вы можете компилировать его используя различные диалекты (TypeScript, Elm, ClojureScript, ReScript, и т.д., прим. перевод.), вам всё равно придётся признать тот факт, что выполнение кода в браузере означает выполнение JavaScript. Поэтому возможность писать на нём, не прибегая к дополнительным инструментам и не используя сильную типизацию, является благословением в сложившихся обстоятельствах.

Что же, прощай, TypeScript. Пусть ты принесешь много строгости и удовлетворения своему племени, позволяя остальным наслаждаться JavaScript в том славном духе, в котором он был изначально задуман: Свободным от сильной (строгой) типизации.


Можно о типизации думать разное, но хотя бы файлики .d.ts с описанием типов, или же аннотации JSDoc можно было бы внедрить — чтобы облегчить ношу пользователей библиотеки и, тем более, контрибьюторов в неё. А уж зачем было выкидывать Prettier (инструмент для авто-форматирования), непонятно :)

В дополнение к переводу написал пост. Подписывайтесь там и тут, если ещё не. Впереди много полезного контента: как переводов, так и самостоятельных статей.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Типы
66.67% Да 54
18.52% Нет 15
14.81% Мне JS мозг проел, не могу отвечать 12
Проголосовал 81 пользователь. Воздержались 11 пользователей.