Как стать автором
Обновить

Комментарии 4

Уже несколько месяцев пользуюсь при работе с легаси проектом. Все надеюсь, что исправлю все ошибки типизации и включу проверку с помощью tsc в билд.
Кроме кучи ошибок, которые страшно трогать не смог побороть привязку интерфейса из .d.ts к классу. @implements не подхватывается.
А вообще — отлично.

Не надо ничего переименовывать, можно оставить все в js, только сказать, чтоб tsc никуда не компилировал — будет только проверять

Забыл сказать, что подсветка ошибок работает не только в VSCode но и в шторме, хотя немного разное поведение * и any
Тоже использую данный подход в вебшторме. Но там есть много нюансов: не все проверки корректно работают, не всегда выводятся верные типы и прочее. Использую именно такой подход вместо TS по причинам:
1) TS компилируется во что-то другое, это «чёрный ящик» в итоге. Многие убеждают, что это не проблема, но у меня проблемы с этим бывают.
2) TS работает только на классах с прототипным наследованием. Но в JS наследование может быть не прототипным, а например на основе функций-конструкторов, которые имеют много преимуществ: простые в реализации честные приватные переменные без # и приватные методы, исключается необходимость вечного this, нет путаницы в this во вложенных функциях (не стрелочных) потому что он единый для всего кода внутри конструктора (const t = this), возможность композиции объекта многими конструкторами сразу и прочее. Недостатки понятно тоже есть.
3) Много времени тратится на верное разруливание типов вместо реальной задачи. Иногда может уйти день чтобы начитаться документации по TS и наконец сварганить мега-решение лишь для верной работы типов.
4) Все d.ts, что я видел, имеют ошибки и неточности. Приходится либо ограничивать что-то, либо дописывать прямо в d.ts, чего быть по идее не должно. Почему-то писатели d.ts ограничиваются официальными документациями модулей, где описаны всегда не все случаи. Например в jQuery при выборке возвращается вовсе не HTMLElement, а Element. Потому что можно сделать выборку из SVGElement например.
И много прочего, что сильно мешает. Получился холиварный комент, пардон. Имхо лучше бы в JS была типизация как когда-то в ActionScript3 — простая и ненавязчивая.
Типизация в JS закроет вход в программирование половине школьников.
Думаю что не обязательно. Потому что может быть не обязательной. Типа по умолчанию всё any как сейчас. Хотя наверное вы правы, так как будет везде код с типами в интернете.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий