Рецепты TypeScript, Баумгартнер С., 2025.
TypeScript — один из важнейших инструментов для JavaScript-разработчиков. Тем не менее даже опытные специалисты получают множество сообщений об ошибках от компилятора TypeScript. неприятно удивляясь этому Откройте «Рецепты TypeScript». В этом практическом руководстве его автор Стефан Баумгартнер описывает способы решения наиболее распространенных задач на TypeScript.
Те. кто уже знаком с основами JavaScript и TypeScript. найдут в книге действенные рецепты, которые помогут справиться с широким спектром вопросов, от настройки проектов со сложной структурой до определения расширенных вспомогательных типов. Каждый такой рецепт поможет разобраться с конкретной проблемой и объяснит, почему и как это работает.

Система типов.
В предыдущей главе вы познакомились с основными элементами, которые позволяют сделать ваш код на JavaScript более выразительным. Но если у вас есть опыт работы с JavaScript, то вы понимаете, что базовые типы и аннотации TypeScript — лишь малая часть присущей ему гибкости.
TypeScript призван сделать намерения JavaScript более понятными, и ему необходимо сделать это, не жертвуя гибкостью, тем более что она позволяет разработчикам создавать великолепные API, которые используют и любят миллионы. Считайте, что TypeScript — это скорее способ формализовать JavaScript, а не ограничить его. Введите систему типов TypeScript.
В этой главе вы разработаете ментальную модель восприятия типов. Вы узнаете, как определять наборы значений широко или узко в зависимости от ваших потребностей и как изменять их область действия на протяжении всего потока управления. Кроме того, мы поговорим о том, как использовать структурную систему типов и когда следует отступать от правил.
ОГЛАВЛЕНИЕ.
Предисловие.
Введение.
Кому стоит прочесть эту книгу.
Цели написания книги.
Структура издания.
Условные обозначения.
Использование примеров кода.
От издательства.
Благодарности.
Глава 1. Настройка проекта.
1.1. Проверка типов JavaScript.
1.2. Установка TypeScript.
1.3. Поддержка типов «в стороне».
1.4. Миграция проекта на TypeScript.
1.5. Загрузка типов из репозитория Definitely Typed.
1.6. Настройка полнофункционального проекта.
1.7. Настройка тестов.
1.8. Типизация модулей ECMAScript из URL.
1.9. Загрузка различных типов модулей в Node.
1.10. Работа с Deno и зависимостями.
1.11. Использование предопределенных конфигураций.
Глава 2. Основные типы.
2.1. Эффективное аннотирование.
2.2. Работа с any и unknown.
2.3. Выбор правильного типа объекта.
2.4. Работа с типами кортежей.
2.5. Различия между интерфейсами и псевдонимами типов.
2.6. Определение перегрузок функций.
2.7. Определение типов параметра this.
2.8. Работа с Symbol.
2.9. Понимание пространств имен значений и типов.
Глава 3. Система типов.
3.1. Моделирование данных с помощью типов объединений и пересечений.
3.2. Явное определение моделей с размеченными типами объединения.
3.3. Проверка полноты с помощью приема аssertNever.
3.4. Закрепление типов с помощью Const Context.
3.5. Сужение типов с помощью предикатов типа.
3.6. Понимание void.
3.7. Работа с типами ошибок в предложениях catch.
3.8. Создание моделей исключающего ИЛИ с помощью приема optional never.
3.9. Эффективное использование утверждений типа.
3.10. Использование сигнатур индекса.
3.11. Различение отсутствующих свойств и значений undefined.
3.12. Работа с перечислениями.
3.13. Определение номинальных типов в системе структурных типов.
3.14. Включение свободного автозаполнения для подмножеств строк.
Глава 4. Обобщенные типы.
4.1. Обобщение сигнатур функций.
4.2. Создание связанных аргументов функций.
4.3. Избавление от any и unknown.
4.4. Создание экземпляров обобщенного типа.
4.5. Создание новых типов объектов.
4.6. Изменение объектов с помощью сигнатур утверждений.
4.7. Сопоставление типов с помощью карт типов.
4.8. Использование ThisType для определения this в объектах.
4.9. Добавление контекста const к параметрам обобщенного типа.
Глава 5. Условные типы.
5.1. Управление сигнатурами сложных функций.
5.2. Фильтрация с помощью типа never.
5.3. Группировка элементов по типу.
5.4. Удаление определенных свойств объекта.
5.5. Выведение типов в условных выражениях.
Глава 6. Типы литералов шаблонов строк.
6.1. Определение пользовательской системы событий.
6.2. Создание обратных вызовов событий с помощью типов манипуляций со строками и переназначения ключей.
6.3. Написание функции форматирования.
6.4. Извлечение типов параметров формата.
6.5. Работа с ограничениями рекурсии.
6.6. Использование литералов шаблонов строк в качестве дискриминантов.
Глава 7. Вариативные типы кортежей.
7.1. Типизация функции concat.
7.2. Типизация функции promisify.
7.3. Типизация функции curry.
7.4. Типизация гибкой функции curry.
7.5. Типизация простейшей функции curry.
7.6. Создание перечисления из кортежа.
7.7. Разделение всех элементов сигнатуры функции.
Глава 8. Вспомогательные типы.
8.1. Установка определенных необязательных свойств.
8.2. Изменение вложенных объектов.
8.3. Переназначение типов.
8.4. Получение всех необходимых ключей.
8.5. Разрешение хотя бы одного свойства.
8.6. Разрешение ровно одного свойства, всех свойств или ни одного.
8.7. Преобразование типов объединения в типы пересечения.
8.8. Использование библиотеки type-fest.
Глава 9. Стандартная библиотека и определения внешних типов.
9.1. Перебор объектов с помощью Object.keys.
9.2. Явное выделение небезопасных операций с помощью утверждений типов и unknown.
9.3. Работа с defineProperty.
9.4. Расширение типов для Array.prototype.includes.
9.5. Фильтрация нулевых значений.
9.6. Расширение модулей.
9.7. Расширение глобальных переменных.
9.8. Добавление модулей, которые отличаются от JS, в граф модулей.
Глава 10. TypeScript и React.
10.1. Написание прокси-компонентов.
10.2. Написание контролируемых компонентов.
10.3. Типизация пользовательских хуков.
10.4. Типизация обобщенных компонентов forwardRef.
10.5. Предоставление типов для контекстного API.
10.6. Типизация компонентов высшего порядка.
10.7. Типизация обратных вызовов в синтетической системе событий React.
10.8. Типизация полиморфных компонентов.
Глава 11. Классы.
11.1. Выбор правильного модификатора видимости.
11.2. Явное переопределение методов.
11.3. Описание конструкторов и прототипов.
11.4. Использование обобщенных типов в классах.
11.5. Решение об использовании классов или пространства имен.
11.6. Написание статических классов.
11.7. Работа со строгой инициализацией свойств.
11.8. Работа с типами this в классах.
11.9. Декораторы.
Глава 12. Стратегии разработки типов.
12.1. Написание простых в сопровождении типов.
12.2. Поэтапное уточнение типов.
12.3. Проверка контрактов с помощью satisfies.
12.4. Тестирование сложных типов.
12.5. Проверка типов данных во время выполнения с помощью Zod.
12.6. Обход ограничений доступа к индексу.
12.7. Принятие решения о том, использовать ли перегрузку функций или условные типы.
12.8. Именование обобщенных типов.
12.9. Прототипирование в TypeScript Playground.
12.10. Предоставление нескольких версий библиотеки.
12.11. Знать, когда остановиться.
Об авторе.
Иллюстрация на обложке.
Купить .
Теги: учебник по программированию :: программирование :: Баумгартнер