В чём преимущество TypeScript перед jsdoc и подсветкой редактора?
Здравствуйте. Объясните мне пожалуйста, зачем нужен typescript, если редакторы умеют подсказывать типы. Ошибку допустить сложно, когда и так всё красное например в редакторе. Я вижу только недостаток в виде ещё одного слоя поверх JS. Ладно бы если неверный тип приводил к ошибке в консоли в рантайме, но этого нет. И в разных демонстрациях на ютубе я вижу, что для JS не включен jsdoc, и сравнение не честное выходит. Может я что-то не понимаю или не вижу очевидное.
1. а при анализе кода они будут посвечивать ошибку если будет обращение к несуществующему свойству объекта? Как при анализе кода можно определить может ли данное свойства быть в данном объекте?
2. jsdoc это в первую очередь документация. И эта документация может быть неверной или не актуальной. Допустим есть какой то класс с методами. В файле класса есть jsdoc описание методов класса. При импорте этого класса в другой файл нужно будет смотреть что там описано в комментах? А если эти комменты написанные разработчиком не актуальны? Нужно будет лезть в код и разбираться. Не очень полезно.
1. Будут. Пишется jsdoc для объекта (например для возвращаемого из функции или "обычного") и всё. Конечно косяки подсветки бывают если этот объект гонять долго через разные функции, но этого часто хватает. Сложности определения я думаю нет, смотрится описание типа и потом отслеживается. Необязательные свойства можно задать и так далее.
2. Это может быть не только документацией, о чём я и говорю. Например для google closure compiler его используют как подсказку для компилятора. Или как я многие используют. С актуальностью то же самое, что и в typescript я полагаю - если не будете корректировать типы, то тоже устареет. Просто по-разному пишется. При импорте никуда смотреть не надо, редактор подсвечивает, выдаёт подсказки типов, свойств, аргументов и прочее. Но я согласен, что TS будет читабельнее гораздо. Я когда-то на ActionScript3 писал, и там были типы, хотя это почти тот же JS, и было очень удобно.
На вкус и цвет... Выход только один - пробовать. Личный опыт и поппулярность TS говорит о том, что в крупных проектах, он здорово предупреждает ошибки в рантайме и облегчает стыковку модулей между разными командами.
В Dart2 пошли дальше и сделали жесткую типизацию в место DuckTyping https://www.dartlang.org/guides/language/sound-dart
Спасибо Сергей и Владимир! Так и вышло, как вы говорили. По сравнению с TypeScript поделки на jsdoc смотрятся убого. Он реально помогает лаконичнее и понятнее писать и находить ошибки, и гораздо лучше анализирует типы. Попробовал на нём писать, и теперь перевожу свой пет-прожект на него. Жаль только нет в рантайме типов ) был бы вообще жир.