Получи случайную криптовалюту за регистрацию!

Всем привет! Сегодня без мухлежей буду писать нормальную мини | Ayub Begimkulov - уроки по JS

Всем привет!

Сегодня без мухлежей буду писать нормальную мини-статью.

Хочу поговорить про такую важную тему, как перевод проекта на TS.

Думаю много людей работают на проектах, где TS уже используется во всю. Однако до сих пор есть кодовые базы, которые только начали переезжать или только собираются.

Данная статья как раз для вас!

Также если у вас есть проект, который был плохо переведен, то я уже писал пост про то, как это можно исправить (ищете по ключевой фразе “suppress-ts-errors”).

Собственно, к самой теме.

В первую очередь, хотел бы задать правильный настрой, при переводе проекта.

Не нужно ожидать, что через месяц уже все ваши файлы будут переведены на TS. Это можно сделать, но стоит ли?

Ответ, надеюсь, у вас тоже нет.

Айюб, а как же тогда переписывать проект?

В моем опыте хорошо работает такой подход:

1) Добавляем в проект возможность писать TS файлы. Очень важно, tsconfig должен быть как можно более строгим с самого начала. А то потом намучаетесь его исправлять.

Единственное что, даем импортировать JS файлы, так как большая часть проекта пока на нем.

2) Пишем весь новый функционал на TS файлах.

3) Понимаем, какой функционал часто импортируется в другие файлы и меняется.

Такие куски можно начать переписывать вместе с какими-то задачами.

В целом, флоу такой. Если человек хочет заимпортировать модуль, написанный на JS он:

а) Импортирует его как есть, по возможности добавляет JSDoc, чтобы типизация в TS файле была правильная.
б) Если модуль старый и скорее всего не будет меняться, лучше вместо JSDoc написать .d.ts файл.
в) По желанию переписывает на TS. Это сделать намного проще, когда уже есть какие-то JSDoc аннотации + есть какое-то понимание того, как работать с тайпскриптом.

Такой механизм работы может и не приведет вас к полностью синему проекту, через пару недель, однако поверьте мне, процесс миграции произойдет быстрее, чем вы думаете.

По началу будет все идти медленно, так как разрабы будут только начинать знакомиться с ТС. Так же все модули будут написаны на JS, что будет давать дополнительную сложность.

Однако через некоторое время, когда у вас уже будут часто используемые модули покрыты JSDoc, станет не так сложно переписать их на TS.

Также легаси куски будут описаны в .d.ts, что позволит не трогать их и избежать ненужных проблем.

Новый код уже будет типизированный и разработчики уже поймут профит, который они получают от строгой типизации.

Тогда уже можно и начинать процесс переписывания. Ключевая вещь тут не заставлять это делать. Можно предлагать на ревью, например.

Либо сделать какое-то необязательное правило. Если тронул старые файлы, перепиши хотя бы один.

Идей тут много. Но в любом случае рано или поздно кто-то перепишет эти файлы, потому что так удобнее. Просто произойдет это не сразу.

В общем, думаю идея тут ясна. Не надо закапывать продуктовую разработку на несколько спринтов. Делайте так, чтобы вся работа шла параллельно.

#devtips #typescript