TypeScript: чи варто переходити, якщо JavaScript влаштовує

Суперечки про TypeScript тривають роками, і більшість аргументів звучать як релігійні. Спробую без цього. Що ви реально отримуєте, коли додаєте типи до JavaScript, і що за це віддаєте?

Головний виграш — помилки знаходяться до запуску. Опечатка у назві поля, функція, яка отримала рядок замість числа, забутий випадок у switch: усе це редактор підсвічує ще під час писання. У маленькому проєкті це дрібниця. У великому, де двадцять людей чіпають спільний код, це різниця між спокійним рефакторингом і тижнем виправлення наслідків.

Друга річ — автодоповнення. Коли редактор знає форму кожного об’єкта, він підказує поля й методи, а документацію ви читаєте набагато рідше. Нові люди в команді входять у кодову базу швидше, бо типи фактично розповідають, як усе влаштовано.

Тепер ціна. Потрібна збірка, налаштування tsconfig, інколи боротьба з типами сторонніх бібліотек. Складні узагальнені типи можуть перетворитися на головоломку, яку не розуміє ніхто, крім автора. Видно, що деякі команди захоплюються цим і пишуть типи розумніші за сам код. Не робіть так.

Практична порада: переходьте поступово. TypeScript дозволяє перейменувати один файл з .js на .ts і йти далі. Починайте з нових модулів і місць, де помилки найдорожчі, наприклад із роботи з API чи грошима. Режим strict вмикайте, коли звикнете.

І про те, чого типи не вирішують. Вони не перевіряють дані, що приходять ззовні. Якщо сервер повернув не те, що ви очікували, TypeScript про це не дізнається, тому на межах системи все одно потрібна валідація, наприклад через zod.

Мій висновок: для скриптів і прототипів JavaScript цілком достатній. Для всього, що житиме роками й матиме кількох авторів, TypeScript окупається доволі швидко.