раздел 04
TypeScript
База TS на code-basics. Дальше: программирование на типах, странности структурной типизации, надёжность на границах, Effect-TS.
Начать раздел
Хочу пройти
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
Уроки раздела
- Мост и странности TypeScript
- Программирование на типах · фундамент
- Программирование на типах · глубже
- Надёжность и типы на границах
- Effect-TS на практике
- Изоморфизмы и программирование
- Из JavaScript в TypeScript: не сломать работающую CRM
- Типизируем CRM · Модель вместо набора строк
- Динамические изменения CRM: путь не доказывает тип
- Типизируем CRM · От HTTP к модели клиента
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Junior
- Базовый диалект TSJSDoc, interfaces, type guards, union types, mapped types, utility types, generics. Опасность any.урок 1 · Мост и странности TypeScriptопираются: урок 2, урок 7
- Директивы TS// @ts-ignore, @ts-expect-error, @ts-nocheck, /// <reference />. Когда какую и почему expect-error лучше ignore.урок 1 · Мост и странности TypeScript
- any, unknown, neverany выключает проверки, unknown требует narrowing, never для невозможных веток и exhaustive checks.урок 1 · Мост и странности TypeScript
- extends vs implementsextends наследует реализацию, implements объявляет контракт. Структурная типизация и миксины.урок 1 · Мост и странности TypeScript
- tsconfig.jsonstrict, target, module, moduleResolution, lib, paths, isolatedModules, project references.урок 1 · Мост и странности TypeScript
- type vs interfaceDeclaration merging, extends и & пересечения, перформанс компилятора, когда что выбрать.урок 1 · Мост и странности TypeScript
Middle
- .d.ts и declaration mergingAmbient declarations, declare module, declare global, аугментация модулей, плюсы и минусы разделения .js и .d.ts.урок 2 · Программирование на типах · фундамент
- ДженерикиПараметризация функций/классов/типов, constraints через extends, defaults, NoInfer, inference.урок 2 · Программирование на типах · фундаментопираются: урок 8
- Миграция JavaScript в TypeScriptСохранение поведения CRM, отдельные конфиги Node и браузера, strict, выпуск JavaScript, tsx, DefinitelyTyped, ESLint с типами и постепенная миграция через JSDoc.урок 7 · Из JavaScript в TypeScript: не сломать работающую CRMопираются: урок 8
- Модель CRM: идентификаторы и связанные вариантыПрефиксные идентификаторы, связи сущностей, null и отсутствие поля, satisfies, вход создания через Pick и сохранение корреляции kind с id.урок 8 · Типизируем CRM · Модель вместо набора строкопираются: урок 9, урок 10
- ООП на TypeScriptAbstract class, модификаторы доступа, enum, overloads, decorators, mixins, GoF на TS.урок 1 · Мост и странности TypeScript
- Пространства имён: типы и переменныеТип vs значение, class User implements Person, namespace vs ES module, declaration merging для типов.урок 2 · Программирование на типах · фундамент
- Система типов глубжеCo/contravariance, narrowing/widening, never/unknown/void/any, keyof, typeof, indexed access. Гарантии TS.урок 2 · Программирование на типах · фундаментопираются: урок 3
- Discriminated unions, исчерпывающий разборРазмеченные объединения с литеральным дискриминантом. Сужение по тегу в switch, проверка исчерпаемости через never, моделирование состояний вместо набора булевых флагов.урок 1 · Мост и странности TypeScript
- Type guards и сужение типовtypeof, instanceof, in, custom predicate x is T, assertion-функции asserts, дискриминированные unions.урок 2 · Программирование на типах · фундаментопираются: урок 9
- Utility Types и собственные реализацииPartial, Required, Pick, Omit, Record, Parameters, ReturnType, Awaited, NonNullable. Самостоятельный Pick/Omit/Partial.урок 2 · Программирование на типах · фундамент
Middle+
- Динамические изменения объектовОперации set, unset, push и inc, unknown и Record, assertions, индексный доступ, исчерпывающий разбор, безопасный проход по пути и пределы мутации доменной модели.урок 9 · Динамические изменения CRM: путь не доказывает тип
- Отладка TypeScriptSource maps, ts-node/tsx, hover для типов, Expect-утилиты, диагностика бесконечной рекурсии в типах.урок 3 · Программирование на типах · глубже
- Свежие фичи TSsatisfies, NoInfer, const type parameters, decorators (stage 3), using/disposable.урок 3 · Программирование на типах · глубже
- Сложные типы: infer, conditional, brandedconst assertions, template strings, infer, два контекста для extends, branded types. Type-challenges до hard.урок 3 · Программирование на типах · глубжеопираются: урок 4, урок 6
- Типизированный API и нормализация клиентаParameters<typeof fetch>, транспорт с unknown, проверка оболочки ответа, маршруты по виду id, нормализованные связи и частичные данные, GraphQL, OpenAPI и ограничения oneOf.урок 10 · Типизируем CRM · От HTTP к модели клиента
- Типы в runtime: zod, io-ts, Effect SchemaКонтрактное программирование на границах. Reflect metadata. TS codegen.урок 4 · Надёжность и типы на границахопираются: урок 5, урок 10
Senior
- Изоморфизмы и гомоморфизмыБиекция, гомоморфизм, изоморфизм как биективный гомоморфизм моноидов. Подмножества, где изоморфизм держится. Рефакторинг API через изоморфизмы: каррирование, Option вместо null, размеченное объединение вместо булевых флагов, мощность типа.урок 6 · Изоморфизмы и программирование
- Теория типов: dependent, recursive, MLЗависимые типы, рекурсивные типы, термы и контексты.урок 5 · Effect-TS на практике
- tsc как инструментtsconfig, plugin system, compile pipeline, Compiler API. OpenAPI->TS, TS->Rust, TS->GraphQL.урок 4 · Надёжность и типы на границах