TypeScript. Подробное Руководство (4.9 beta) Книга и документация в одном Год издания: 2022 Автор: Коллектив авторов Издательство: Самиздат Язык: Русский Формат: PDF Качество: Издательский макет или текст (eBook) Интерактивное оглавление: Да Количество страниц: 631 Описание: TypeScript значительно сокращает время на устранение ошибок и выявление багов, которые порой не так просто определить в динамической среде JavaScript. В случае, если для разработчика TypeScript является первым типизированным языком, следует знать, что его изучение значительно ускорит процесс профессионального роста, поскольку типизированный мир открывает аспекты программирования, которые не проявляются в языках с динамической типизацией. Помимо этого, TypeScript позволяет писать более понятный и читаемый код, максимально описывающий предметную область, за счет чего архитектура приложения становится более выраженной, а разработка неявно увеличивает профессиональный уровень программиста. Всё это в своей совокупности сокращает время разработки программы, снижая её стоимость и предоставляя разработчикам возможность поскорее приступить к реализации нового и ещё более интересного проекта.
Примеры страниц (скриншоты)
Оглавление
Глава 00. Что такое TypeScript и для чего он нужен 23 00.0. Определение 23 00.1. История TypeScript 24 00.2. Для чего нужен TypeScript 24 00.3. Зачем разработчику TypeScript 25 Глава 01. Вступление 26 Глава 02. Система типов, тип данных, значимые и ссылочные типы 28 02.0. Система Типов 29 02.1. Тип данных (тип) 29 02.2. Тип данных, передающийся по значению (примитивный тип) 30 02.3. Тип данных, передающийся по ссылке 32 Глава 03. Связывание, типизация, вывод типов 35 03.0. Обработка кода компилятором 35 03.1. Лексический анализ (токенизация - tokenizing) 36 03.2. Синтаксический анализ (разбор - parsing) 36 03.3. Семантический анализ 37 03.4. Связывание (Binding) 37 03.5. Типизация 37 03.6. Вывод Типов (type inference) 38 Глава 04. Преобразование типов 39 04.0. Неявные Преобразования 39 04.1. Явные Преобразования 40 Глава 05. Типизированные и нетипизированные языки программирования 42 05.0. Нетипизированные языки 42 05.1. Типизированные языки 43 Глава 06. Статическая и динамическая типизация 44 06.0. Статическая типизация (Static Typing) 44 06.1. Динамическая Типизация (Dynamic Typing) 45 Глава 07. Сильная и слабая типизация 47 07.0. Сильная типизация (strongly typed) 47 07.1. Слабая типизация (weakly typed) 48 Глава 08. Явная и неявная типизация 50 08.0. Явная типизация (explicit typing) 50 08.1. Неявная типизация (implicit typing) 51 Глава 09. Совместимость типов на основе вида типизации 53 09.0. Совместимость типов (Types Compatibility) 53 09.1. Номинативная Типизация (nominative typing) 54 09.2. Структурная Типизация (structural typing) 57 09.3. Утиная Типизация (Duck typing) 59 Глава 10. Совместимость типов на основе вариантности 60 10.0. Вариантность 60 10.1. Иерархия наследования 61 10.2. Ковариантность 63 10.3. Контравариантность 65 10.4. Инвариантность 66 10.5. Бивариантность 67 Глава 11. Аннотация Типов 68 11.0. Аннотация Типов - общее 68 11.1. Аннотация типа 69 11.2. Синтаксические конструкции var, let, const 69 11.3. Функции (function) 69 11.4. Стрелочные Функции (arrow function) 71 11.5. Классы (class) 71 11.6. Сравнение Синтаксиса TypeScript и JavaScript 73 11.7. Итог 75 Глава 12. Базовый Тип Any 76 12.0. Any (any) произвольный тип 76 Глава 13. Примитивные типы Number, String, Boolean, Symbol, BigInt 78 13.0. Важно 78 13.1. Number (number) примитивный числовой тип 79 13.2. String (string) примитивный строковый тип 80 13.3. Boolean (boolean) примитивный логический тип 81 13.4. Symbol (symbol) примитивный символьный тип 82 13.5. BigInt (bigint) примитивный числовой тип 83 Глава 14. Примитивные типы Null, Undefined, Void, Never, Unknown 84 14.0. Важно 84 14.1. Null (null) примитивный null тип 85 14.2. Undefined (undefined) примитивный неопределенный тип 86 14.3. Void (void) отсутствие конкретного типа 88 14.4. Never (never) примитивный тип 90 14.5. Unknown (unknown) 93 Глава 15. Примитивный Тип Enum 97 15.0. Enum (enum) примитивный перечисляемый тип 97 15.1. Перечисления с числовым значением 98 15.2. Перечисления со строковым значением 102 15.3. Смешанное перечисление (mixed enum) 104 15.4. Перечисление в качестве типа данных 105 15.5. Перечисление const с числовым и строковым значением 106 15.6. Когда стоит применять enum? 107 Глава 16. Типы - Union, Intersection 108 16.0. Тип Объединение (Union Types) 108 16.1. Тип Пересечение (Intersection Type) 110 Глава 17. Type Queries (запросы типа), Alias (псевдонимы типа) 111 17.0. Запросы Типа (Type Queries) 111 17.1. Псевдонимы Типов (Type Aliases) 113 Глава 18. Примитивные литеральные типы Number, String, Template String, Boolean, Unique Symbol, Enum 118 18.0. Литеральный тип Number (Numeric Literal Types) 118 18.1. Литеральный тип String (String Literal Types) 120 18.2. Шаблонный литеральный тип String (Template String Literal Types) 121 18.3. Литеральный Тип Boolean (Boolean Literal Types) 123 18.4. Литеральный Тип Unique Symbol (unique symbol) уникальный символьный тип 123 18.5. Литеральный тип Enum (Enum Literal Types) 125 Глава 19. Object, Array, Tuple 127 19.0. Object (object) — ссылочный объектный тип 127 19.1. Array (type[]) ссылочный массивоподобный тип 129 19.2. Tuple ([T0, T1, …, Tn]) тип кортеж 131 Глава 20. Function, Functional Types 137 20.0. Function Types - тип функция 137 20.1. Functional Types - функциональный тип 138 20.2. this в сигнатуре функции 139 Глава 21. Interfaces 144 21.00. Общая теория 144 21.01. Интерфейс в TypeScript 146 21.02. Объявление (declaration) 146 21.03. Конвенции именования интерфейсов 147 21.04. Реализация интерфейса (implements) 148 21.05. Декларация свойств get и set (accessors) 149 21.06. Указание интерфейса в качестве типа (interface types) 150 21.07. Расширение интерфейсов (extends interface) 151 21.08. Расширение интерфейсом класса (extends class) 154 21.09. Описание класса (функции-конструктора) 156 21.10. Описание функционального выражения 157 21.11. Описание индексных членов в объектных типов 159 21.12. Инлайн интерфейсы (Inline Interface) 159 21.13. Слияние интерфейсов 160 Глава 22. Объектные типы с индексными членами (объектный тип с динамическими ключами) 164 22.0. Индексные члены (определение динамических ключей) 164 22.1. Строгая проверка при обращении к динамическим ключам 174 22.2. Запрет обращения к динамическим ключам через точечную нотацию 176 22.3. Тонкости совместимости индексной сигнатурой с необязательными полями 177 Глава 23. Модификаторы доступа (Access Modifiers) 180 23.0. Модификатор доступа public (публичный) 181 23.1. Модификатор доступа private (закрытый или скрытый) 182 23.2. Модификатор доступа protected (защищенный) 183 23.3. Модификаторы доступа и конструкторы класса 184 23.4. Быстрое объявление полей 186 Глава 24. Закрытые поля определенные спецификацией ECMAScript 189 24.0. Нативный закрытый (private) модификатор доступа 189 Глава 25. Абстрактные классы (abstract classes) 193 25.0. Общие характеристики 193 25.1. Теория 196 Глава 26. Полиморфный тип this 198 26.0. this - как тип 198 Глава 27. Модификатор readonly (только для чтения) 202 27.0. Модификатор readonly 202 Глава 28. Definite Assignment Assertion Modifier 207 28.0. Модификатор утверждения не принадлежности значения к типу undefined 207 Глава 29. Модификатор override 211 29.0. Модификатор override и флаг --noImplicitOverride 211 Глава 30. Классы — Тонкости 215 30.0. Классы - Тонкости implements 215 30.1. Частичное слияние интерфейса с классом 216 30.2. Переопределение свойств полями и наоборот при наследовании 217 Глава 31. Различия var, let, const и модификатора readonly при неявном указании примитивных типов 220 31.0. Нюансы на практике 220 Глава 32. Аксессоры 222 32.0. Отдельные типы аксеcсоров 222 Глава 33. Операторы - Optional, Not-Null Not-Undefined, Definite Assignment Assertion 224 33.0. Необязательные поля, параметры и методы (Optional Fields, Parameters and Methods) 224 33.1. Оператор ! (Non-Null and Non-Undefined Operator) 227 33.2. Оператор ! (Definite Assignment Assertion) 231 Глава 34. Обобщения (Generics) 233 34.0. Обобщения - общие понятия 233 34.1. Обобщения в TypeScript 235 34.2. Параметры типа - extends (generic constraints) 242 34.3. Параметра типа - значение по умолчанию = (generic parameter defaults) 245 34.4. Параметры типа - как тип данных 249 34.5. Модификаторы вариантности параметров типа in и out 251 Глава 35. Дискриминантное объединение (Discriminated Union) 255 35.0. Дискриминантное объединение 255 Глава 36. Импорт и экспорт только типа 263 36.0. Предыстория возникновения import type и export type 263 36.1. import type и export type - форма объявления 265 36.2. Импорт и экспорт только типа на практике 267 36.3. Вспомогательный флаг --importsNotUsedAsValues 268 36.4. Разрешение импорта и экспорта только типа с помощью resolution-mode 276 Глава 37. Утверждение типов (Type Assertion) 278 37.0. Утверждение типов - общее 278 37.1. Утверждение типа с помощью синтаксиса 280 37.2. Утверждение типа с помощью оператора as 282 37.3. Приведение (утверждение) к константе (const assertion) 284 37.4. Утверждение в сигнатуре (Signature Assertion) 288 37.5. Оператор satisfies 290 Глава 38. Защитники типа 292 38.0. Защитники Типа - общее 292 38.1. Сужение диапазона множества типов на основе типа данных 295 38.2. Сужение диапазона множества типов на основе признаков присущих типу Tagged Union 299 38.3. Сужение диапазона множества типов на основе доступных членов объекта 303 38.4. Сужение диапазона множества типов на основе функции, определенной пользователем 304 Глава 39. Вывод типов 308 39.0. Вывод типов - общие сведения 308 39.1. Вывод примитивных типов 309 39.2. Вывод примитивных типов для констант (const) и полей только для чтения (readonly) 310 39.3. Вывод объектных типов 311 39.4. Вывод типа для полей класса на основе инициализации их в конструкторе 312 39.5. Вывод объединенных (Union) типов 314 39.6. Вывод пересечения (Intersection) с дискриминантными полями 317 39.7. Вывод типов кортеж (Tuple) 319 Глава 40. Совместимость объектных типов (Compatible Object Types) 321 40.0. Важно 321 40.1. Совместимость объектных типов в TypeScript 322 Глава 41. Совместимость функциональных типов (Compatible Function Types) 332 41.0. Важно 332 41.1. Совместимость параметров 333 41.2. Совместимость возвращаемого значения 338 Глава 42. Совместимость объединений (Union Types) 341 42.0. Совместимость 341 Глава 43. Типизация в TypeScript 344 43.0. Общие сведения 344 43.1. Статическая типизация (static typing) 345 43.2. Сильная типизация (strongly typed) 345 43.3. Явно типизированный (explicit typing) с выводом типов (type inference) 346 43.4. Совместимость типов (Type Compatibility), структурная типизация (structural typing) 346 43.5. Вариантность (variance) 348 43.6. Наилучший общий тип (Best common type) 350 43.7. Контекстный тип (Contextual Type) 352 Глава 44. Оператор keyof, Lookup Types, Mapped Types, Mapped Types - префиксы + и - 355 44.0. Запрос ключей keyof 355 44.1. Поиск типов (Lookup Types) 357 44.2. Сопоставление типов (Mapped Types) 359 44.3. Префиксы + и - в сопоставленных типах 364 Глава 45. Условные типы (Conditional Types) 366 45.0. Условные типы на практике 366 45.1. Распределительные условные типы (Distributive Conditional Types) 369 45.2. Вывод типов в условном типе 370 45.3. Ограничение infer с помощью extends 371 Глава 46. Readonly, Partial, Required, Pick, Record 373 46.0. Readonly (сделать члены объекта только для чтения) 373 46.1. Partial (сделать все члены объекта необязательными) 376 46.2. Required (сделать все необязательные члены обязательными) 378 46.3. Pick (отфильтровать объектный тип) 379 46.4. Record (динамически определить поле в объектном типе) 381 Глава 47. Exclude, Extract, NonNullable, ReturnType, InstanceType, Omit, Awaited 386 47.0. Exclude (исключает из T признаки присущие U) 386 47.1. Extract (общие для двух типов признаки) 388 47.2. NonNullable (удаляет типы null и undefined) 389 47.3. ReturnType (получить тип значения возвращаемого функцией) 390 47.4. InstanceType (получить через тип класса тип его экземпляра) 391 47.5. Parameters (получить тип размеченного кортежа описывающий параметры функционального типа) 393 47.6. ConstructorParameters (получить через тип класса размеченный кортеж описывающий параметры его конструктора) 394 47.7. Omit (исключить из T признаки ассоциированными с ключами перечисленных множеством K) 395 47.8. Awaited (рекурсивное развертывания промисов) 396 Глава 48. Массивоподобные readonly типы, ReadonlyArray, ReadonlyMap, ReadonlySet 397 48.0. Массивоподобные readonly типы (модифицировать непосредственно в аннотации типа) 397 48.1. ReadonlyArray (неизменяемый массив) 400 48.2. ReadonlyMap (неизменяемая карта) 400 48.3. ReadonlySet (неизменяемое множество) 401 Глава 49. Синтаксические конструкции и операторы 402 49.0. Операторы присваивания короткого замыкания (&&=, ||=, &&=) 402 49.1. Операнды для delete должны быть необязательными 403 49.2. Объявление переменных 'необязательными' при деструктуризации массивоподобных объектов 406 49.3. Модификатор abstract для описания типа конструктора 408 Глава 50. Типизированный React 412 50.0. Расширение .tsx 412 Глава 51. Функциональные компоненты 414 51.0. Определение компонента как Function Declaration 414 51.1. Определение компонента как Function Expression 438 Глава 52. Классовые компоненты 444 52.0. Производные от Component 444 52.1. Производные от PureComponent 468 Глава 53. Универсальные компоненты 470 53.0. Обобщенные компоненты (Generics Component) 470 Глава 54. Типизированные хуки 478 54.00. Предопределенные хуки - useState() 478 54.01. Предопределенные хуки - useEffect() и useLayoutEffect() 481 54.02. Предопределенные хуки - useContext() 482 54.03. Предопределенные хуки - useReducer() 484 54.04. Предопределенные хуки - useCallback() 492 54.05. Предопределенные хуки - useRef() 493 54.06. Предопределенные хуки - useImperativeHandle() 496 54.07. Предопределенные хуки - useMemo() 497 54.08. Предопределенные хуки - useDebugValue() 498 54.09. Пользовательский хук 499 Глава 55. Контекст (Context) 504 55.0. Определение контекста 504 55.1. Использование контекста 506 Глава 56. HOC (Higher-Order Components) 511 56.0. Определение hoc 511 56.1. Определение hoc на основе функционального компонента 512 56.2. Определение hoc на основе классового компонента 516 Глава 57. Пространства имен (namespace) и модули (module) 519 57.0. Namespace и module — предназначение 519 57.1. Namespace - определение 520 57.2. Модули (export, import) — определение 521 57.3. Конфигурирование проекта 522 Глава 58. Настройка рабочего окружения 526 58.1. Сборка проекта с помощью tsc (TypeScript compiler) 527 Глава 59. Сборка с использованием ссылок на проекты 532 59.0. Ссылки на проекты 532 Глава 60. Декларации 536 60.00. Что такое декларация (Declaration) 536 60.01. Установка деклараций с помощью @types 537 60.02. Подготовка к созданию декларации 539 60.03. Разновидности деклараций 541 60.04. Декларации и область видимости 542 60.05. Декларации для библиотек с одной точкой входа 543 60.06. Декларации для библиотек с множеством точек входа 550 60.07. Создание деклараций вручную 553 60.08. Директива с тройным слешем (triple-slash directives) 554 60.09. Импортирование декларации (import) 555 Глава 61. Публикация TypeScript 557 61.0. Публикация 557 Глава 62. Опции компилятора 560 62.000. strict 560 62.001. suppressExcessPropertyErrors 561 62.002. suppressImplicitAnyIndexErrors 561 62.003. noImplicitAny 563 62.004. checkJs 564 62.005. JSX 566 62.006. jsxFactory 567 62.007. target (t) 569 62.008. extends 569 62.009. alwaysStrict 571 62.010. strictNullChecks 572 62.011. stripInternal 572 62.012. noImplicitThis 573 62.013. noImplicitUseStrict 574 62.014. baseUrl 574 62.015. paths 575 62.016. rootDir 576 62.017. rootDirs 577 62.018. traceResolution 577 62.019. lib 578 62.020. noLib 578 62.021. noResolve 579 62.022. noStrictGenericChecks 579 62.023. preserveConstEnums 580 62.024. removeComments 581 62.025. noUnusedLocals 581 62.026. noUnusedParameters 583 62.027. skipLibCheck 584 62.028. declarationDir 584 62.029. types 585 62.030. typeRoots 587 62.031. allowUnusedLabels 587 62.032. noImplicitReturns 588 62.033. noFallthroughCasesInSwitch 589 62.034. outFile 590 62.035. allowSyntheticDefaultImports 592 62.036. allowUnreachableCode 592 62.037. allowJs 593 62.038. reactNamespace 594 62.039. pretty 595 62.040. moduleResolution 595 62.041. exclude 596 62.042. noEmitHelpers 596 62.043. newLine 597 62.044. inlineSourceMap 597 62.045. inlineSources 598 62.046. noEmitOnError 598 62.047. noEmit 599 62.048. charset 599 62.049. diagnostics 600 62.050. declaration 600 62.051. downlevelIteration 601 62.052. emitBOM 601 62.053. emitDecoratorMetadata 602 62.054. forceConsistentCasingInFileNames 602 62.055. help (h) 603 62.056. importHelpers 603 62.057. isolatedModules 603 62.058. listEmittedFiles 604 62.059. listFiles 604 62.060. sourceRoot 605 62.061. mapRoot 605 62.062. maxNodeModuleJsDepth 606 62.063. project (p) 606 62.064. init 607 62.065. version (v) 607 62.066. watch (w) 607 62.067. preserveSymlinks 608 62.068. strictFunctionTypes 608 62.069. locale 609 62.070. strictPropertyInitialization 609 62.071. esModuleInterop 610 62.072. emitDeclarationsOnly 611 62.073. resolveJsonModule 611 62.074. declarationMap 612 62.075. strictBindCallApply 613 62.076. showConfig 614 62.077. build 614 62.078. verbose 615 62.079. dry 615 62.080. clean 615 62.081. force 616 62.082. incremental 616 62.083. tsBuildInfoFile 617 62.084. allowUmdGlobalAccess 617 62.085. disableSourceOfProjectReferenceRedirect 618 62.086. useDefineForClassFields 619 62.087. importsNotUsedAsValues 619 62.088. assumeChangesOnlyAffectDirectDependencies 620 62.089. watchFile 620 62.090. watchDirectory 621 62.091. fallbackPolling 622 62.092. synchronousWatchDirectory 623 62.093. noUncheckedIndexedAccess 623 62.094. noPropertyAccessFromIndexSignature 625 62.095. explainFiles 626 62.096. noImplicitOverride 627 62.097. useUnknownInCatchVariables 627 62.098. exactOptionalPropertyTypes 628 62.099. preserveValueImports 629 62.100. moduleSuffixes 629
Коллектив авторов - TypeScript. Подробное Руководство (4.9 beta) Книга и документация в одном [2022, PDF, RUS] download torrent for free and without registration
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum