algoprog icon indicating copy to clipboard operation
algoprog copied to clipboard

Постепенно переходить на typescript

Open petr-kalinin opened this issue 3 years ago • 5 comments

Хочется постепенно переводить код на typescript, потому что coffeescript, конечно, уже не современный язык. Переводить, как я понимаю, можно постепенно, потому что код на TS по идее должен уметь взаимодействовать с кодом на числом JS, а соотвественно и на CS.

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

petr-kalinin avatar May 19 '21 18:05 petr-kalinin

@petr-kalinin, добрый день. Постепенный переход на Typescript почти невозможен, так как потребует создавать *.d.ts файлы с описанием типов, что крайне неэффективно.

Возможно, стоит использовать Angular для клиентской части. Это решит множество проблем.

  1. Переход на TypeScript.
  2. Уменьшит количество зависимостей.
  3. Избавит от необходимости напрямую работу с Webpack'ом.
  4. Сделает использование реактивного программирования обязательным (RxJS),
  5. Позволит добавлять тесты по мере создания компонентов.
  6. Переписывание приложения позволит начать использовать библиотеку компонентов, например taiga-ui или Angular Material, что сократит количество кода в этом приложении
  7. Не обязывает переписывать приложение единовременно, так как есть возможность использовать React компоненты в Angular

syrok0010 avatar Feb 04 '22 14:02 syrok0010

Постепенный переход на Typescript почти невозможен, так как потребует создавать *.d.ts файлы с описанием типов, что крайне неэффективно.

Непонятно, почему вы так думаете. У меня, конечно, нет особого опыта, но я ведь верно понимаю, что из обычного js-файла можно вызывать ts-код? То есть можно начать переводить на ts наиболее корневые классы (в первую очередь модели), а дальше уже потихоньку продвинаться.

И я совершенно не понял, какое отношение Angular имеет ко всему этому. Во-первых, Angular, как я понимаю, это чисто клиентская библиотека, во-вторых, это явно более радикальное изменение, чем просто переписывание на ts.

P.S. Если мы знакомы, особенно если вы занимаетесь на алгопроге, может быть, вы представитесь?

petr-kalinin avatar Feb 04 '22 17:02 petr-kalinin

Нескомпилированный ts нельзя вызывать из js. Мне кажется, что компилировать Ts и вызывать его из js - извращение.

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

Вижу переписывание на Angular лишь чуть более радикальным изменением, чем переписывание на Ts, однако решающим проблемы в долгосрочной перспективе.

P. s. не занимаюсь, но собираюсь. P.p.s. Для SSR есть Angular Universal.

syrok0010 avatar Feb 04 '22 18:02 syrok0010

Создал форк, попробую выполнить задуманное. Единственная проблема, которую вижу - сервер. Нужно одновременно изменить модели как в клиенте, так и на сервере. Возможно, правильным промежуточным решением будет сделать отдельные модели (?).

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

Будет ли возможно использовать итог в проде, если он будет готов?

syrok0010 avatar Feb 04 '22 20:02 syrok0010

Нет, я не буду заливать перевод на angular в обозримом будущем

petr-kalinin avatar Feb 05 '22 06:02 petr-kalinin