Вывод
Курс пройден! (проходил этот - https://www.udemy.com/course/understanding-typescript/)
В целом довольно неплохой курс, особенно для начинающих и для тех кто ранее с TS не работал
Для тех кто уже работал, конечно, уже не очень подойдет, глубинных каких-то тем тут не рассматривается, в частности мало что рассказано про declaration файлы (d.ts)
Но в любом случае, пройдя этот курс, я чувствую в себе уверенность что я могу использовать ts и на фронте и на беке, и тот же nestjs гораздо проще понимать теперь
Дневник цели
посмотрел nodejs+express&ts
было показано как использовать ts в nodejs, как использовать es6 импорты и простенькое crud апи на express
посмотрел react+ts
кратенько было рассказано, но в целом понятно
у нас на работе реакт и мы не используем ts, и в целом нам ок, но конечно дефолтные proptypes реакта проигрывает тем же описаниям пропсов ts, т.к реактовское в рантайме только работает, а это конечно очень неудобно. с этой точки зрения конечно и добавлять ts не выглядит очень запарно, но надо бы почитать еще инфы о том какие подводные камни есть. в курсе в этом про минусы не упоминают)
посмотрел второй практический проект "Select & Share place app"
очень простой проект - текстовый инпут с кнопкой и карта, на сабмит рендерится карта по введенному адресу
была продемонстрирована работа с двумя внешними библиотеками (axios и google maps)
не очень интересный проект для меня)
посмотрел 3rd party libraries & ts
было рассказано про существование @types/* пакетов, про пакет class-transformer и class-validator
посмотрел webpack with ts
ничего особенного, просто настройка вебпака под работу с ts
но для тех кто не работал с вебпаком совсем - достаточно подробно чтобы понять что к чему, хоть и только для ts настраивается
посмотрел modules and namespaces
с modules всё довольно понятно (т.к я в основном на реакте пишу на работе), единственное что тут была продемонстрирована работа es2015 modules без вебпака и прочих, т.е сам браузер резолвит модули, из неприятного - нужно в ts файлах писать импорты js файлов, которые будут собраны потом, что довольно таки корявенько выглядит и может порождать путаницу, но в целом работает и приятнее чем с namespace
про namespace было рассказано не лучшим образом, сначала он выделил часть файликом в один namespace и попытался вызвать его в другом файле, получил ошибку и решил в итоге всё в один неймспейс засунуть, вместо того что использовать имя экспортируемого объекта через неймспейс.. может он конечно не совсем удачно объяснил свою мотивацию, но и не показал альтернатив
глобально с namespace конечно выходит так что компиляция может пройти без ошибок, при этом в runtime можно всё равно получить ошибку. это конечно печаль тоска, наверняка кто-нить уже придумал правило для ts lint или чтото подобного что бы такого избегать, но в любом случае нужно это иметь в виду
в C# когда работал с namespace там конечно это как-то более естественно что ли выглядит, тут в ts как-то немного корявенько, но может у меня такое впечатление сложилось, надо будет поискать какие-то более адекватные примеры
https://medium.com/jspoint/typescript-namespaces-f43cd002c08c тут в целом неплохая статья про namespaces и более подробно чем в курсе было показано
но вывод в конце тот же - уже есть стандарт для модулей в js (es2015 modules), его лучше и использовать
досмотрел drag&drop project
вторая половина была поприятнее, тут уже чуть-чуть было отрефакторено то что было ранее написано
из немного странного - в начале он написал код с any а потом уже с нормальными типами, остается надеяться что это только в целях чтобы люди поняли что происходит, иначе получается добавлять типы уже после того как написал работающий код..
в целом всё понятно, дальше там еще будет немного рефакторинга и разбиение на отдельные модули (щас всё в один файл засунуто)
начал смотреть практический проект - drag & drop project
посмотрел примерно половинку
он в начале говорит мол попробуйте сделать сами а потом сравните с тем что у него получилось. прекрасная мысль, только он в начале не показывает что сделать то толком надо.. ну думаю ок, я не ленивый посмотрю финальное видео с этой части где можно увидеть что у него в итоге вышло. посмотрел, не очень вдохновился. решил что лучше посмотрю сначала всё таки как он реализует а потом может сделаю свой вариант, но мб лучше применю на каком-то более реальном проекте
зато сразу понимаешь как здорово когда есть react/vue и тд.. а то на ванилле писать конечно то еще удовольствие. с другой стороны если он конечно к концу этой практический части всё отрефакторит и станет похоже на чтото приличное то может и ничего, но я почти половину посмотрел и пока выглядит код так себе..
ну хотя бы он не записал десять видео о том как он писал css к этой штуке а просто заранее файлик подготовил. за это определенно плюс)
посмотрел decorators
теперь более понятно что с ними можно делать, в целом и раньше видел как их использует тот же class-validator и nestjs но свои писать не приходилось