Как бы это странно не звучало, но одно из главных преимуществ TypeScript - это ускорение разработки в несколько раз. Да, когда еще ничего нет - разработка незначительно замедлится, так как помимо логики нужно описать еще и типы. Но это только в начале. И это не только возможность писать большую часть кода с помощью автодополнения. Поддержка существующего кода занимает в десятки раз больше времени, чем его начальное написание. Стоит ли вложить несколько лишних часов на старте, чтоб сэкономить в последствии месяцы? Как по мне стоит.
Еще одним огромным плюсом является возможность проектировать на типах.
Познав дзен TypeScript'а я перестал пользоваться UML, так как типы дают мне ту же наглядность, но при этом еще и сокращают время, так как типы - это уже код. Ну и источник правды остается один. Бизнес требования выраженные в типах не дают отклонится от них при написании логики, исключая возможность неправильной трактовки задачи. Перенеся задачу в типы, я могу обсудить ее с коллегами и исправить неточности еще
до написания кода, что опять же сильно экономит время.
Ну и отвчечу на некоторые Ваши сомнения:
TSLint в VSCode прям жутко тугой
TSLint официально deprecated, вместо него стоит использовать
плагин к eslint, заодно можете
мой конфиг попробовать.
Типы? Есть JSDOC
JSDoc в плане типов не умеет и 10% того, что умеет TypeScript. Кроме того, никто в здравом уме не пишет JSDoc на приватную логику, а значит проверки типов там не будет. JSDoc не гарантирует корректность рефакторинга, а вот благодаря TypeScript я, опять таки, точно не забуду обновить JSDoc.
многие библиотеки nodejs не имеют типов
может лет 5 назад так и было, но сейчас встретить библиотеку без типов - скорее исключение. Если библиотека популярная, но не предоставляет типов, скорее всего их уже
написал кто-то другой, достаточно просто установить одноименный модуль из npm скоупа
types и все будет работать само.
Поддержка браузерами скомпилированного кода? Да какбы почти весь JS имеет поддержку 95%+, тот же Babel уже забыл когда использовал.
Вообще это не основная задача компилятора TypeScript, а опциональная возможность. И babel + preset-env с ней справляются гораздо лучше. И никто не мешает использовать их вместе. А еще думаю вопрос времени, когда кто-то напишет оптимизатор кода использующий информацию о типах из TS.
Примерно в каждой второй есть инстансы, на которые смотришь - и чешешь репу - а как называется тип этой переменной в @types/?
import {someObject} from 'some-library';
type TypeFromValue = typeof someObject;
const valueCopy: TypeFromValue = {
...someObject,
type: 'overrides',
with: 'type check',
};
и кстати, вот пример того что JSDoc типы не умеют.
//@ts-check
и почти везде останется бесполезный any.
P.S.
удачи такие типы на JSDoc описывать
P.P.S.
Еще прелести современного TypeScript невозможные у...