Дэн Вандеркам
Эффективный TypeScript: 62 способа улучшить код
Переводчик Д. Акуратер
Технический редактор А. Руденко
Литературный редактор А. Руденко
Художники Л. Егорова, В. Мостипан
Корректоры Н. Викторова, М. Молчанова (Котова)
Верстка Л. Егорова
Дэн Вандеркам
Эффективный TypeScript: 62 способа улучшить код. — СПб.: Питер, 2021.
ISBN 978-5-4461-1623-2
© ООО Издательство "Питер", 2021
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Оглавление
Отзывы
Глава 1. Знакомство с TypeScript
Правило 1. TypeScript и JavaScript взаимосвязаны
Правило 2. Выбирайте нужные опции в TypeScript
Правило 3. Генерация кода не зависит от типов
Правило 4. Привыкайте к структурной типизации
Правило 5. Ограничьте применение типов any
Глава 2. Система типов в TypeScript
Правило 6. Используйте редактор для работы с системой типов
Правило 7. Воспринимайте типы как наборы значений
Правило 8. Правильно выражайте отношение символа к пространству типов или пространству значений
Правило 9. Объявление типа лучше его утверждения
Правило 10. Избегайте оберточных типов (String, Number, Boolean, Symbol, BigInt)
Правило 11. Проверяйте пределы исключительных свойств типа
Правило 12. По возможности применяйте типы ко всему выражению функции
Правило 13. Знайте разницу между type и interface
Правило 14. Операции типов и обобщения сокращают повторы
Правило 15. Используйте сигнатуры индексов для динамических данных
Правило 16. В качестве сигнатур индексов используйте массивы, кортежи и ArrayLike, но не number
Правило 17. Используйте readonly против ошибок, связанных с изменяемостью
Правило 18. Используйте отображенные типы для синхронизации значений
Глава 3. Вывод типов
Правило 19. Не засоряйте код ненужными аннотациями типов
Правило 20. Для разных типов — разные переменные
Правило 21. Контролируйте расширение типов
Правило 22. Старайтесь сужать типы
Правило 23. Создавайте объекты целиком
Правило 24. Применяйте псевдонимы согласованно
Правило 25. Для асинхронного кода используйте функции async вместо обратных вызовов
Правило 26. Используйте контекст при выводе типов
Правило 27. Используйте функциональные конструкции и библиотеки для содействия движению типов
Глава 4. Проектирование типов
Правило 28. Используйте типы, имеющие допустимые состояния
Правило 29. Будьте либеральны в том, что берете, но консервативны в том, что даете
Правило 30. Не повторяйте информацию типа в документации
Правило 31. Смещайте нулевые значения на периферию типов
Правило 32. Предпочитайте объединения интерфейсов интерфейсам объединений
Правило 33. Используйте более точные альтернативы типов string
Правило 34. Лучше сделать тип незавершенным, чем ошибочным
Правило 35. Генерируйте типы на основе API и спецификаций, а не данных
Правило 36. Именуйте типы согласно области их применения
Правило 37. Рассмотрите использование маркировок для номинального типизирования
Глава 5. Эффективное применение any
Правило 38. Используйте максимально узкий диапазон для типов any
Правило 39. Используйте более точные варианты any
Правило 40. Скрывайте небезопасные утверждения типов в грамотно типизированных функциях
Правило 41. Распознавайте изменяющиеся any
Правило 42. Используйте unknown вместо any для значений с неизвестным типом
Правило 43. Используйте типобезопасные подходы вместо обезьяньего патча
Правило 44. Отслеживайте зону охвата типов для сохранения типобезопасности
Глава 6. Декларации типов и @types
Правило 45. Размещайте TypeScript и @types в devDependencies
Правило 46. Проверяйте совместимость трех версий, задействованных в декларациях типов
Правило 47. Экспортируйте все типы, появляющиеся в публичных API
Правило 48. Используйте TSDoc для комментариев в API
Правило 49. Определяйте тип this в обратных вызовах
Правило 50. Лучше условные типы, чем перегруженные декларации
Правило 51. Зеркалируйте типы для разрыва зависимостей
Правило 52. Тестируйте типы с осторожностью
Глава 7. Написание и запуск кода
Правило 53. Используйте возможности ECMAScript, а не TypeScript
Правило 54. Проводите итерацию по объектам
Правило 55. Иерархия DOM — это важно
Правило 56. Не полагайтесь на private при скрытии информации
Правило 57. Используйте карты кода для отладки
Глава 8. Перенос данных в TypeScript
Правило 58. Пишите современный JavaScript
Правило 59. Используйте // @ts-check и JSDoc для экспериментов в TypeScript
Правило 60. Используйте allowJs для совмещения TypeScript и JavaScript
Правило 61. Конвертируйте модуль за модулем, восходя по графу зависимостей
Правило 62. Не считайте миграцию завершенной, пока не включите noImplicitAny
Об авторе
Об обложке
Отзывы
«“Эффективный TypeScript” рассматривает наиболее распространенные проблемы, с которыми мы сталкиваемся при работе с TypeScript, и дает практические, ориентированные на результаты советы. Книга будет полезна и опытным, и начинающим разработчикам».
Райан Кавано, ведущий инженер по TypeScript в Microsoft
«“Эффективный TypeScript” содержит практические рецепты и должна быть под рукой у каждого профессионального разработчика. Даже если вы думаете, что знаете TypeScript, купите эту книгу — не пожалеете».
Яков Файн, Java-чемпион
«TypeScript захватывает мир разработки... Глубокое понимание TypeScript поможет разработчикам проявить себя, используя мощные функции языка».
Джейсон Киллиан, соучредитель TypeScript NYC и бывший специалист по обслуживанию TSLint
«Эта книга не только о том, что может делать TypeScript, но и о том, почему полезна отдельно взятая функция и где применять шаблоны для достижения наибольшего эффекта. Книга фокусируется на практических советах, которые будут полезны в повседневной работе. При этом в ней достаточно теории, чтобы читатель на глубинном уровне понял, как все работает. Я считаю себя опытным пользователем TypeScript, но узнал много нового из этой книги».
Джесси Халлетт, старший инженер-программист, Originate, Inc.
Посвящается Алекс.
Ты — мой тип.