1

Етап 1

Введение

2

Етап 2

Настройка окружения

3

Етап 3

Основные типы

4

Етап 4

Продвинутые типы

5

Етап 5

Классы

6

Етап 6

Компилятор TypeScript

7

Етап 7

Generics

8

Етап 8

Манипуляция с типами

9

Етап 9

Служебные типы

10

Етап 10

Декораторы

11

Етап 11

Модульность и библиотеки

12

Етап 12

Порождающие паттерны

13

Етап 13

Структурные паттерны

14

Етап 14

Порождающие паттерны

15

Етап 15

Проект - Утилита выполнения команд

16

Етап 16

Обновления TypeScript

17

Етап 17

Заключение курса

18

Етап 18

Личный проект на TypeScript

1

Етап 1

Введение

2

Етап 2

Настройка окружения

3

Етап 3

Основные типы

4

Етап 4

Продвинутые типы

5

Етап 5

Классы

6

Етап 6

Компилятор TypeScript

7

Етап 7

Generics

8

Етап 8

Манипуляция с типами

9

Етап 9

Служебные типы

10

Етап 10

Декораторы

11

Етап 11

Модульность и библиотеки

12

Етап 12

Порождающие паттерны

13

Етап 13

Структурные паттерны

14

Етап 14

Порождающие паттерны

15

Етап 15

Проект - Утилита выполнения команд

16

Етап 16

Обновления TypeScript

17

Етап 17

Заключение курса

18

Етап 18

Личный проект на TypeScript

17 червня 2024
Мета завершена % date%

Автор мети

Андрей

Росія, Москва

33 Рік / року / років

Загальна

Прохождение курса по TypeScript

Моя основная цель - стать React-разработчиком. Я уже выучил JavaScript и теперь, чтобы приступить к React, я собираюсь пройти курс по TypeScript, так как он сейчас в тренде, активно используется во многих Frontend-проектах за счёт того, что позволяет писать более стабильный и понятный код, что прям очень важно для крупных проектов.

Чем эта цель может быть интересно вам? Ну, если вы тоже хотите прокачать свои навыки в TypeScript, вы сможете следить за моим прогрессом, получать советы и участвовать в обсуждениях. А ещё я буду делиться полезными ресурсами, смешными моментами и своими находками.

Так что если вам интересно, как я буду справляться с этим вызовом, хотите посмеяться над моими ошибками (и, надеюсь, научиться на них) или просто получить порцию мотивации для своих собственных целей — подписывайтесь на мою цель! ?

Это часть моей общей и главной цели «Переезд в Австралию».

 Критерій завершення

Пройдены все уроки из курса

 Особисті ресурси

Курс "TypeScript с нуля" от Purpleschool

  1. Введение

  2. Настройка окружения

  3. Основные типы

  4. Продвинутые типы

  5. Классы

  6. Компилятор TypeScript

  7. Generics

  8. Манипуляция с типами

  9. Служебные типы

  10. Декораторы

  11. Модульность и библиотеки

  12. Порождающие паттерны

  13. Структурные паттерны

  14. Порождающие паттерны

  15. Проект - Утилита выполнения команд

  16. Обновления TypeScript

  17. Заключение курса

  18. Личный проект на TypeScript

    Калькулятор

  • 542
  • 17 червня 2024, 12:15


Мета у складі групи

Фронтенд

  • 272

    учасника
  • 357

    цілей

Висновок

71день
Андрей26 серп 2024, 16:36

TypeScript оказался куда сложнее, чем я себе представлял. Думал, будет достаточно указывать типы, но здесь оказалось ещё есть интерфейсы и генерики, а также куча перепроверок всего.

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

Щоденник мети

71день

Запис до етапу «Личный проект на TypeScript»

Андрей26 серп 2024, 16:32

Завершил свой мини-проект на TypeScript "Калькулятора нагрузки на оси тягача и полуприцепа".

Веб-приложение состоит из 3 шагов:

  1. На первом шаге пользователь указывает данные тягача и полуприцепа. При переключении радио-кнопок и выбора select, меняет изображение транспорта, данные по осям на изображении и пересоздаётся таблица.
  2. На втором шаге указывает данные паллет, которые будут грузиться в полуприцеп. Добавлена возможность добавление групп паллет и их удаление.
  3. На третьем шаге показывается расчёт нагрузки по осям транспорта. Пользователь может перемещаться паллеты в полуприцепе (drag and drop) и менять данные паллет в модальном окне. После изменений идёт перерасчёт нагрузки и сохранение новых данных в Local Storage.

Думал на этот проект у меня ушло 3 недели, но сейчас увидел, по последней записи, что прошло уже больше месяца. 😮

Но практика была хорошей. Узнал, как указывать типы для HTML-элементов, попрактиковался как с JavaScript, так с TypeScript. Попрактиковался с сохранением и работой Local Storage. Узнал, как работает Drag and Drop. Полностью привык к export/import.

Почему почти нигде не смог применить генераторы. Буду искать понимание как их применять в дальнейших видео мастер-классов по React и TypeScript.

✨Перехожу к следующему шагу, к долгожданному курсу по React 🤩✨

36день
Андрей22 лип 2024, 12:50

Прошёл уроки по созданию калькулятора на JS от WebCademy. Переписывал код с использованием TypeScript.
Калькулятор считает ежемесячный платеж и переплату в зависимости от условий кредита.

Во время практики узнал, что при использовании DOM, элементам нужно указывать тип, как в этом примере `document.getElementById('orderForm') as HTMLFormElement`.

В ближайшие дни буду писать собственный калькулятор.

23день

Запис до етапу «Служебные типы»

Андрей9 лип 2024, 11:10

Прошёл тему "9. Служебные типы". Пройден 61% курса (94 из 156).

В уроках были разобраны типы: Partial, Required, Readonly, Pick, Omit, Extract, Exclude, ReturnType, Parameters, ConstructorParameters, Awaited.

Следующими темами курса идут декораторы и другие паттерны программирования.

Для начала работы с TypeScript в React будет достаточно уже пройденных тем. Мне бы их до конца понять. 😊
Паттерны буду проходить после прохождения курса React, а может даже после трудоустройства.

По текущей цели пройду уроки по созданию калькулятора на JavaScript. При прохождение урока буду переписывать код с JavaScript на TypeScript. Затем начну создавать свой небольшой учебный проект на TypeScript.

Наталья06.08.2024

Можешь теперь для закрепления материала челленж пройти: https://github.com/antfu/type-challenges

Андрей26.08.2024

Наталья, спасибо, что поделились ресурсом! Воспользуюсь им для закрепления)

22день

Запис до етапу «Манипуляция с типами»

Андрей8 лип 2024, 09:46

Прошёл тему "8. Манипуляция с типами".

В уроке про Infer в самом виде говорится, и в комментариях также написали, что он практически никогда не используется, НО один пользователь написал комментарий, что его часто спрашивают на собеседованиях. Поэтому с infer обязательно нужно разобраться. У автора комментария, infer спрашивали на трёх собеседованиях, при этом только в одной из компаний ему сказали, что один раз использовали его в своём проекте. Что ещё раз подтверждает, что для прохождения собеседования и для работы нужны совсем разные знания.

В качестве дополнительного материала смотрел видео с канала wise.js https://www.youtube.com/watch?v=SpQDK74vLKo , в котором разбираются Conditional Types и infer.

Начал понимать, почему некоторые фронтедеры не любят TypeScript. Код становится не кодом, а Франкенштейном 😊

19день

Запис до етапу «Generics»

Андрей5 лип 2024, 11:56

Прошёл тему "7. Generics". Пройдено 49% курса (76 из 156).
Generics помогают избежать дублирования кода и делают его более универсальным.

Пройденные темы:

  • Примеры встроенных generic
  • Написание функции с generic
  • Использование в типах
  • Ограничение generic
  • Generic в классах
  • Mixins

Дополнительно посмотрел урок на YouTube ttps://youtu.be/L1ONtRnIxcY?si=K09hdKpE5SJxIsZ5
Считаю его лучшим уроком объясняющим тему Generics.

Почти половина курса заняла 19 дней, хотя планировал изучить TypeScript за 2 недели.
То ли TypeScript такой сложный, то ли я медленной учусь

17день

Запис до етапу «Компилятор TypeScript»

Андрей3 лип 2024, 22:12

Прошёл ещё одну тему "6. Компилятор TypeScript". Пройдено 66 уроков из 156.

В ней было 7 уроков про настройку компилятора в файле tsconfig.json, включения и выключения разных свойств. Рассказано, какие свойства рекомендуется включать.

В итоге в файле компилятора включены свойства:

  • "target": "ES2015",
  • "module": "commonjs",
  • "inlineSourceMap": true,
  • "outDir": "./build/js/",
  • "removeComments": true,
  • "noEmitOnError": true,
  • "esModuleInterop": true,
  • "strict": true,
  • "strictPropertyInitialization": false,
  • "noFallthroughCasesInSwitch": true,
  • "noUncheckedIndexedAccess": true,
  • "noImplicitOverride": true,
  • "noPropertyAccessFromIndexSignature": true,
  • "allowUnreachableCode": true,
  • "skipLibCheck": true

Для React в будущем нужно будет поменять свойство "module" на другое. В курсе автор больше делает акцент на Node.js.

Вот бы все так темы быстро проходились, как эта. 😊 А то на классы ушла неделя.

17день

Запис до етапу «Классы»

Андрей3 лип 2024, 13:19

Прошёл 5 тему курса "Классы".

По RoadMap React-разработчика не требовалось проходить классы, но я видел, что в некоторых вакансиях указывают необходимость знания ООП, поэтому перед темой в курсе я сначала прошёл классы в JavaScript, а затем уже перешёл к TypeScript.

В TypeScript они не сильно отличаются от обычных классов. Прям сильно не погружался в тему, выполняя разных задания вне курса, так как я не уверен, что точно мне понадобится знание ООП, но на собеседованиях уже смогу дать хоть какие-то ответы и если буду смотреть практические уроки с применением классов, смогу понимать о чём идёт речь.

10день

Запис до етапу «Продвинутые типы»

Андрей26 черв 2024, 14:16

Прошёл 4 тему курса "Продвинутые типы". Уже появились первые впечатления о курсе.

Курс в целом неплохой, но есть свои нюансы. Иногда автор пропускает важные мелочи. Например, при объявлении типов он использует разные разделители – запятые, точки с запятой, а иногда и вообще ничего. Пришлось это самостоятельно выяснять, что здесь чаще всего используют точку с запятой.

Ещё один момент – типы для функций. Автор задаёт типы функциям, но не объясняет, как это делать. Пришлось также самому разбираться.

В плюсы можно указать, что автор часто приводит примеры из своей практики, и это круто. Практика всегда помогает лучше понять материал.

При прохождение тему Type Guards, не мог понять для чего он нужен. Чуть лучше понять его необходимость мне помог урок с YouTube-канала Purpleschool. Автор как раз записал его, так как к нему после курсов часто приходят с вопросами по этой теме.

https://www.youtube.com/watch?v=P2Ny05sAYoY

3день

Запис до етапу «Основные типы»

Андрей19 черв 2024, 09:29

Прошёл две темы:

  • Настройка окружения;
  • Основные типы (number, string, boolean, object, Array, Tuples, Enum).

Посмотрев уроки по типам, повторял всё в VS Code из уроков. Думал, что эти темы пролечу на одном дыхании.

Попросил chatGPT сделать мне задания по пройденным темам, чтобы лучше усвоить пройдённый материал и тут понял, что сам ничего не могу сделать 😱.
Объявить типы для переменных и функций не сложно, но начал тупить в способах передачи значений Tuples и Enum в функции. Даже с объявлением типов у объектов не справился. Вылезли наружу проблемы, которые не объяснялись в уроках.

Пришлось ещё раз пересматривать уроки про object, Tuples и Enum. Даже такие темы с первого раза не всегда понятны.Представляю, как люди удивляются, когда проходят курсы по программированию, относясь к ним как к просмотру сериала, и в конце не могут написать ни одной строчки кода. 😄

Загрузить 2 комментария
Андрей26.06.2024

Серый Гусь, нет, ошибка намного примитивней и связана с JS.

Андрей, не хватает ESlint. Пробежался глазами дважды по строчкам кода на скринах, но ничего не нашел. Увы.

Андрей30.06.2024

Серый Гусь, я считал, что ошибка в задании "4. Массивы", и что chatGPT вывел слово `banana`, а по моему мнению должен был вывести `cherry`, так как при сравнении символов символ "c" больше "b". Я делал решение через метод `reduce`.

Но сейчас перепроверил, используя обычный цикл for, и оказалось chatGPT всё правильно вывел, а это моё решение было не правильным. Я в своём условие не указал, что должно происходить при равной длине.

function findLongestWord(arr: string[]): string {

return arr.reduce((acc, item) => return arr.reduce((acc, item) => (acc.length > item.length) ? acc : item)

}

const words = ["apple", "banana", "cherry", "date"];

console.log(findLongestWord(words));

Достаточно поставить знак ">=" и вернётся `banana`.

Извиняюсь, что ввёл в замешательство 😔

Если бы вы не обратили внимание на мой пост, я бы не узнал, что допустил ошибку. Спасибо!

Вы тоже можете
опубликовать свою
цель здесь

Мы поможем вам ее достичь!

310 000

единомышленников

инструменты

для увлекательного достижения

Присоединиться
Реєстрація

Можливості
безмежні.
Настав час
відкрити свої.

Уже зарегистрированы?
Вхід на сайт

Заходьте.
Відкрито.

Ще не зареєстровані?
 
Підключіться до будь-якого з ваших акаунтів, ваші дані будуть взяті з акаунту.
Забули пароль?
Дмитрий
Gene
Вадим
Дмитрий
Profit
Дмитрий
Алексей
Дмитрий
Андрей
Вадим
Дмитрий
Дмитрий
Дмитрий
Кошка
Дмитрий
Серый Гусь
Серый Гусь