👋 Svelte уходит от TypeScript и как это поменяет мир типизации
Новостью уже обсудили 100к раз, но я запрыгну на хайп-трейн и расскажу вам кое-что интересное и базируется это на 2-х фактах:
1. Я никогда в жизни не хочу писать приложения без типизации.
2. Я не считаю, что при создании библиотек типизация обязательно нужна.
И TypeScript дает для этого в 10 раз больше, чем большинство других типизированных языков:
Есть такой очень странный казус – когда ты пишешь некоторый абстрактный код, который потом будет использоваться в разных контекстах кодовых баз других разработчиков, типизация может начать очень сильно мешать.
Да, вы 1000% должно протипизировать инпуты (аргументы функций) и аутпуты (результат функций), но содержимое этих функций авторы библиотек часто приводят к any, потому что в таком коде тебе нужен перформанс и НЕтипобезопасные операции, учитывающие контекст.
Код библиотек должен подстраиваться под контекст разработчика, а значит быть "динамичным", а не "статичным".
НО это не означает, что типизация тут мешает. Абсолютно нет. Потому что по итогу вам НУЖНО описать правильные типизированные входы и выходы.
И тут TypeScript, позволяет вам написать код либы на JS (или даже 1 отдельный файл) и далее покрыть его .d.ts, что по факту хедер файл .h из мира С.
То есть, мы пишем нетипобезопасный код так, как нам нужно, а потом покрываем его типами, чтобы это было удобно другим разработчикам.
Такой подход претит большинству TS разрабов, НО не из-за "неправильности" подхода, а потому что большинство проектов написанных таким образом – гавно с точки зрения типизации (типы неполные, ошибочные, супер-сложные и невозможные к кастомизации)
И опять же "НО": библиотеки имеющие хреновые .d.ts просто были в первую очередь написанны без оглядки на TS, он появился потом, как придаток.
Если же создатель библиотеки будет писать .js сразу с учетом того, как это будет работать в .ts вы даже разницы не заметите.
+ всегда можно сделать хак, где только 1-n файлов из всей либы на js, а остальные, на ts, если нужно.
Короче, наша задача – использовать типизацию во-благо себе и другим разрабам и иногда это означает пойти не по "стандартной дорожке", а по "правильной дорожке".
Всем мощных дорог 🛣️