| 作者 |
| 钟胜平 |
| 丛书名 |
| 实战 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782012111719 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------TypeScript入门与实战--------------------------- TypeScript是一个开源的、跨平台且带有类型系统的avaScript超集,可以编译为纯JavaScript,然后运行在任意浏览器和其他环境中,使开发者可以使用一些未来JavaScript标准(ECMAScript 6和7)中的特性。TypeScript为JavaScript添加了可选的静态类型、类和模块,可使大型JavaScript应用使用更好的工具,并保持更清晰的结构。 本书系统化介绍TypeScript程序设计,包括四大部分。第一篇“初识TypeScript”介绍TypeScript与JavaScript的关系以及快速开始编写第一个TypeScript程序,第二篇“ TypeScript语言概览”介绍TypeScript语言基础、迭代器与生成器、装饰器、命名空间、模块等。第三篇“TypeScript类型系统”介绍TypeScript类型,如面量、枚举、非Nullable、非Nullable等,还介绍了更多高级类型,如联合、交叉、索引、映射对象、泛型、类类型、接口、类型别名、多态的this、有条件类型、类型查询、类型断言等,最后介绍类型更深入内容,如类型声明合并、类型推论、类型兼容性、外部类型声明、编写声明文件等。第四篇“TypeScript应用”通过综合案例介绍TypeScript的配置管理、开发技巧等。 ---------------------------TypeScript项目开发实战--------------------------- 本书首先介绍常常被其他图书忽视的一些TypeScript功能,然后讲解如何创建一个简单的Markdown解析器。接着将介绍React,并创建一个客户端联系人管理器。之后,本书带领你认识Angular框架,并使用MEAN栈创建一个相册。本书接着将帮助你创建一个GraphQL Angular待办事项应用程序,并编写一个Socket.IO聊天室。本书开发的最后一个Angular项目是一个地图应用程序。之后回到React,介绍了如何使用Docker和微服务。紧接着,本书讲解了如何使用TensorFlow和机器学习来创建一个图像分类应用程序。最后,本书介绍了如何把TypeScript和C#结合起来,创建一个基于ASP.NET Core的音乐库应用程序。 |
| 目录 |
---------------------------TypeScript入门与实战--------------------------- 前言 第一篇 初识TypeScript 第1章 TypeScript简介 2 1.1 什么是TypeScript 2 1.1.1 始于JavaScript,终于JavaScript 3 1.1.2 可选的静态类型 4 1.1.3 开放与跨平台 4 1.2 为什么要使用TypeScript 5 1.2.1 易于发现代码中的错误 5 1.2.2 提高生产力 6 1.2.3 支持JavaScript的最新特性 7 1.3 成功案例 8 1.3.1 Visual Studio Code 8 1.3.2 Angular 9 第2章 快速开始 10 2.1 在线编写并运行TypeScript 10 2.1.1 Hello World! 11 2.1.2 扩展功能:选择TypeScript版本 12 2.1.3 扩展功能:TypeScript配置项 12 2.2 本地编写并运行TypeScript 13 2.2.1 选择代码编辑器 13 2.2.2 安装Visual Studio Code 15 2.2.3 安装TypeScript 15 2.2.4 创建文件 16 2.2.5 编译程序 17 2.2.6 运行程序 18 2.2.7 可选步骤:设置默认构建任务 18 第二篇 TypeScript语言概览 第3章 TypeScript语言基础 22 3.1 变量 22 3.1.1 变量名 23 3.1.2 变量声明 23 3.2 注释 24 3.2.1 单行注释与多行注释 25 3.2.2 区域注释 25 3.3 数据类型 26 3.3.1 Undefined 27 3.3.2 Null 27 3.3.3 Boolean 27 3.3.4 String 27 3.3.5 Number 28 3.3.6 Symbol 28 3.3.7 Object 29 3.4 字面量 29 3.4.1 Null字面量 30 3.4.2 Boolean字面量 30 3.4.3 Number字面量 30 3.4.4 字符串字面量 30 3.4.5 模板字面量 30 3.5 对象 31 3.5.1 对象字面量 31 3.5.2 原型对象 32 3.6 数组 34 3.6.1 数组字面量 34 3.6.2 数组中的元素 34 3.7 函数 34 3.7.1 函数声明 34 3.7.2 函数表达式 35 3.7.3 箭头函数 36 第4章 TypeScript语言进阶 37 4.1 BigInt 37 4.1.1 创建BigInt 38 4.1.2 BigInt与Number 38 4.2 展开运算符 39 4.2.1 展开数组字面量 39 4.2.2 展开对象字面量 39 4.2.3 展开函数参数 39 4.3 解构 40 4.3.1 数组解构 40 4.3.2 对象解构 40 4.4 可选链运算符 40 4.4.1 基础语法 41 4.4.2 短路求值 41 4.5 空值合并运算符 42 第三篇 TypeScript类型系统 第5章 TypeScript类型基础 44 5.1 类型注解 44 5.2 类型检查 45 5.2.1 非严格类型检查 45 5.2.2 严格类型检查 45 5.3 原始类型 46 5.3.1 boolean 46 5.3.2 string 47 5.3.3 number 47 5.3.4 bigint 47 5.3.5 symbol与unique symbol 47 5.3.6 Nullable 50 5.3.7 void 53 5.4 枚举类型 54 5.4.1 数值型枚举 55 5.4.2 字符串枚举 56 5.4.3 异构型枚举 57 5.4.4 枚举成员映射 58 5.4.5 常量枚举成员与计算枚举成员 58 5.4.6 联合枚举类型 62 5.4.7 const枚举类型 65 5.5 字面量类型 66 5.5.1 boolean字面量类型 66 5.5.2 string字面量类型 67 5.5.3 数字字面量类型 67 5.5.4 枚举成员字面量类型 68 5.6 单元类型 68 5.7 顶端类型 69 5.7.1 any 69 5.7.2 unknown 71 5.7.3 小结 73 5.8 尾端类型 74 5.8.1 never 74 5.8.2 应用场景 75 5.9 数组类型 76 5.9.1 数组类型定义 76 5.9.2 数组元素类型 78 5.9.3 只读数组 79 5.10 元组类型 80 5.10.1 元组的定义 80 5.10.2 只读元组 81 5.10.3 访问元组中的元素 82 5.10.4 元组类型中的可选元素 83 5.10.5 元组类型中的剩余元素 83 5.10.6 元组的长度 84 5.10.7 元组类型与数组类型的兼容性 85 5.11 对象类型 85 5.11.1 Object 86 5.11.2 object 89 5.11.3 对象类型字面量 91 5.11.4 弱类型 97 5.11.5 多余属性 97 5.12 函数类型 102 5.12.1 常规参数类型 102 5.12.2 可选参数类型 102 5.12.3 默认参数类型 104 5.12.4 剩余参数类型 105 5.12.5 解构参数类型 106 5.12.6 返回值类型 106 5.12.7 函数类型字面量 108 5.12.8 调用签名 109 5.12.9 构造函数类型字面量 110 5.12.10 构造签名 111 5.12.11 调用签名与构造签名 111 5.12.12 重载函数 112 5.12.13 函数中this值的类型 118 5.13 接口 119 5.13.1 接口声明 119 5.13.2 属性签名 120 5.13.3 调用签名 120 5.13.4 构造签名 121 5.13.5 方法签名 121 5.13.6 索引签名 122 5.13.7 可选属性与方法 125 5.13.8 只读属性与方法 126 5.13.9 接口的继承 127 5.14 类型别名 129 5.14.1 类型别名声明 129 5.14.2 递归的类型别名 130 5.14.3 类型别名与接口 132 5.15 类 133 5.15.1 类的定义 134 5.15.2 成员变量 135 5.15.3 成员函数 138 5.15.4 成员存取器 138 5.15.5 索引成员 140 5.15.6 成员可访问性 140 5.15.7 构造函数 143 5.15.8 参数成员 144 5.15.9 继承 145 5.15.10 实现接口 150 5.15.11 静态成员 151 5.15.12 抽象类和抽象成员 153 5.15.13 this类型 155 5.15.14 类类型 156 第6章 TypeScript类型进阶 158 6.1 泛型 158 6.1.1 泛型简介 159 6.1.2 形式类型参数 160 6.1.3 实际类型参数 161 6.1.4 泛型约束 162 6.1.5 泛型函数 165 6.1.6 泛型接口 167 6.1.7 泛型类型别名 168 6.1.8 泛型类 169 6.2 局部类型 170 6.3 联合类型 171 6.3.1 联合类型字面量 171 6.3.2 联合类型的类型成员 173 6.4 交叉类型 176 6.4.1 交叉类型字面量 176 6.4.2 交叉类型的类型成员 178 6.4.3 交叉类型与联合类型 180 6.5 索引类型 181 6.5.1 索引类型查询 182 6.5.2 索引访问类型 185 6.5.3 索引类型的应用 186 6.6 映射对象类型 187 6.6.1 映射对象类型声明 187 6.6.2 映射对象类型解析 188 6.6.3 映射对象类型应用 188 6.6.4 同态映射对象类型 190 6.7 条件类型 196 6.7.1 条件类型的定义 196 6.7.2 分布式条件类型 197 6.7.3 infer关键字 199 6.8 内置工具类型 201 6.8.1 Partial 201 6.8.2 Required 202 6.8.3 Readonly 202 6.8.4 Record 202 6.8.5 Pick 202 6.8.6 Omit 203 6.8.7 Exclude 203 6.8.8 Extract 203 6.8.9 NonNullable 203 6.8.10 Parameters 204 6.8.11 ConstructorParameters 204 6.8.12 ReturnType 204 6.8.13 InstanceType 205 6.8.14 ThisParameterType 205 6.8.15 OmitThisParameter 206 6.8.16 ThisType 206 6.9 类型查询 206 6.10 类型断言 207 6.10.1 类型断言 208 6.10.2 as T类型断言 208 6.10.3 类型断言的约束 209 6.10.4 const类型断言 210 6.10.5 !类型断言 212 6.11 类型细化 213 6.11.1 类型守卫 214 6.11.2 可辨识联合类型 225 6.11.3 赋值语句分析 232 6.11.4 基于控制流的类型分析 233 6.11.5 断言函数 233 第7章 TypeScript类型深入 238 7.1 子类型兼容性 238 7.1.1 类型系统可靠性 239 7.1.2 子类型的基本性质 239 7.1.3 顶端类型与尾端类型 240 7.1.4 原始类型 240 7.1.5 函数类型 241 7.1.6 对象类型 245 7.1.7 泛型 249 7.1.8 联合类型 250 7.1.9 交叉类型 251 7.2 赋值兼容性 251 7.3 类型推断 253 7.3.1 常规类型推断 253 7.3.2 按上下文归类 255 7.4 类型放宽 256 7.4.1 常规类型放宽 256 7.4.2 字面量类型放宽 257 7.5 命名空间 261 7.5.1 命名空间声明 262 7.5.2 导出命名空间内的声明 263 7.5.3 别名导入声明 265 7.5.4 在多文件中使用命名空间 266 7.5.5 小结 269 7.6 模块 269 7.6.1 模块简史 269 7.6.2 ECMAScript模块 273 7.6.3 模块导出 273 7.6.4 模块导入 276 7.6.5 重命名模块导入和导出 278 7.6.6 针对类型的模块导入与导出 280 7.6.7 动态模块导入 284 7.6.8 --module 285 7.7 外部声明 286 7.7.1 外部类型声明 287 7.7.2 外部模块声明 292 7.8 使用声明文件 293 7.8.1 语言内置的声明文件 293 7.8.2 第三方声明文件 293 7.8.3 自定义声明文件 298 7.9 模块解析 299 7.9.1 相对模块导入 299 7.9.2 非相对模块导入 300 7.9.3 模块解析策略 301 7.9.4 模块解析策略之Classic 301 7.9.5 模块解析策略之Node 304 7.9.6 --baseUrl 308 7.9.7 paths 310 7.9.8 rootDirs 312 7.9.9 导入外部模块声明 312 7.9.10 --traceResolution 313 7.10 声明合并 314 7.10.1 接口声明合并 315 7.10.2 枚举声明合并 317 7.10.3 类声明合并 318 7.10.4 命名空间声明合并 318 7.10.5 扩充模块声明 321 7.10.6 扩充全局声明 322 第四篇 TypeScript应用 第8章 TypeScript配置管理 324 8.1 编译器 324 8.1.1 安装编译器 325 8.1.2 编译程序 326 8.2 编译选项 328 8.2.1 编译选项风格 328 8.2.2 使用编译选项 330 8.2.3 严格类型检查 331 8.2.4 编译选项列表 337 8.3 tsconfig.json 338 8.3.1 使用配置文件 338 8.3.2 编译选项列表 340 8.3.3 编译文件列表 342 8.3.4 声明文件列表 346 8.3.5 继承配置文件 348 8.4 工程引用 351 8.4.1 使用工程引用 352 8.4.2 工程引用示例 353 8.4.3 --build 354 8.4.4 solution模式 356 8.5 JavaScript类型检查 357 8.5.1 编译JavaScript 357 8.5.2 JavaScript类型检查 358 8.5.3 JSDoc与类型 360 8.6 三斜线指令 363 8.6.1 / 364 8.6.2 / 366 8.6.3 / 367 第9章 TypeScript项目实践 371 9.1 TypeScript与Babel 371 9.1.1 Babel 372 9.1.2 TypeScript编译器 372 9.1.3 实例演示 374 9.1.4 注意事项 380 9.1.5 小结 381 9.2 TypeScript与webpack 381 9.2.1 webpack 381 9.2.2 实例演示 381 9.2.3 小结 385 9.3 TypeScript与ESLint 385 9.3.1 ESLint 386 9.3.2 实例演示 386 9.3.3 集成Visual Studio Code 390 9.3.4 小结 393 9.4 TypeScript与Visual Studio Code 393 9.4.1 代码格式化 394 9.4.2 组织模块导入语句 395 9.4.3 代码导航 395 9.4.4 快速修复 396 9.4.5 重构工具 396 9.4.6 CodeLens 397 ---------------------------TypeScript项目开发实战--------------------------- 前言 审校者简介 第1章 TypeScript的高级特性 1 1.1 技术需求 2 1.2 使用tsconfig构建面向未来的TypeScript 2 1.3 TypeScript高级特性简介 3 1.3.1 借助联合类型使用不同的类型 3 1.3.2 使用交叉类型组合类型 5 1.3.3 使用类型别名简化类型声明 7 1.3.4 使用对象展开赋值属性 8 1.3.5 使用REST属性解构对象 10 1.3.6 使用REST处理可变数量的参数11 1.3.7 使用装饰器进行AOP 13 1.3.8 使用混入(mixin)组成类型 17 1.3.9 使用泛型,将相同的代码用于不同的类型20 1.3.10 使用映射来映射值24 1.3.11 使用Promise和async/await创建异步代码25 1.3.12 使用Bootstrap创建UI27 1.4 小结 30 习题 31 第2章 使用TypeScript创建一个markdown编辑器 32 2.1 技术需求33 2.2 项目概述33 2.3 开始创建一个简单的HTML项目34 2.4 编写一个简单的markdown解析器34 2.4.1 创建Bootstrap UI 35 2.4.2 将markdown标签类型映射到HTML标签类型38 2.4.3 使用MarkdownDocument类表示转换后的markdown标记 41 2.4.4 使用访问者更新markdown文档 42 2.4.5 通过使用责任链模式决定应用哪个标签 44 2.4.6 综合运用 48 2.5 小结 49 延伸阅读50 第3章 React Bootstrap联系人管理器 51 3.1 技术需求 51 3.2 项目概述 52 3.3 开始使用组件 52 3.4 创建一个支持TypeScript的React Bootstrap项目 53 3.5 创建模拟布局 53 3.5.1 创建应用程序 54 3.5.2 使用tslint设置代码的格式 55 3.5.3 添加Bootstrap支持 56 3.6 在React中使用tsx组件 57 3.6.1 React如何使用虚拟DOM来提高响应性 57 3.6.2 React应用程序的组件 58 3.7 显示个人信息界面59 3.8 验证用户输入及验证器的使用 65 3.8.1 验证地址66 3.8.2 验证姓名68 3.8.3 验证电话号码68 3.9 在React组件中应用验证70 3.10 创建数据并把数据发送给IndexedDB数据库71 3.10.1 在状态中添加对记录状态的支持 74 3.10.2 从PersonalDetails访问数据库79 3.11 增强代码83 3.12 小结83 习题84 延伸阅读84 第4章 MEAN栈——构建一个相册 85 4.1 技术需求86 4.2 MEAN栈86 4.3 项目概述87 4.4 准备工作88 4.5 使用MEAN栈创建Angular相册 88 4.5.1 Angular简介 88 4.5.2 创建应用程序 90 4.5.3 使用Angular Material创建UI 91 4.5.4 使用Material添加导航 92 4.5.5 创建第一个组件——FileUpload组件 94 4.5.6 在应用程序中引入对Express的支持100 4.5.7 提供路由支持 102 4.5.8 显示图片107 4.5.9 显示对话框114 4.6 小结 115 习题 116 延伸阅读 116 第5章 使用GraphQL和Apollo创建Angular待办事项应用程序 117 5.1 技术需求118 5.2 理解GraphQL与REST的关系118 5.3 项目概述119 5.4 准备工作120 5.5 使用GraphQL和Angular创建待办事项应用程序120 5.5.1 创建应用程序121 5.5.2 创建GraphQL架构 126 5.5.3 创建GraphQL解析器 129 5.5.4 使用Apollo Server作为服务器 133 5.5.5 GraphQL Angular客户端 135 5.5.6 向页面组件添加内容 139 5.6 小结 149 习题 150 延伸阅读150 第6章 使用Socket.IO构建一个聊天室应用程序 151 6.1 技术需求152 6.2 使用Socket.IO建立客户端/服务器之间的长时间通信 152 6.3 项目概述152 6.4 开始使用Socket.IO和Angular 153 6.5 使用Socket.IO、Angular和Auth0创建一个聊天室应用程序155 6.5.1 创建应用程序 156 6.5.2 为服务器添加Socket.IO支持 158 6.5.3 创建聊天室客户端 160 6.5.4 使用Auth0授权和验证用户 162 6.5.5 使用安全路由165 6.5.6 添加客户端聊天功能166 6.5.7 使用GeneralchatComponent完成我们的应用程序170 6.6 小结172 习题172 延伸阅读172 第7章 使用必应地图和Firebase创建基于云的Angular地图应用程序 173 7.1 技术需求174 7.2 现代应用程序及使用云服务的趋势 174 7.3 项目概述174 7.4 在Angular中使用必应地图175 7.4.1 注册必应地图 176 7.4.2 注册Firebase 178 7.5 使用Angular和Firebase创建必应地图应用程序181 7.5.1 添加地图组件181 7.5.2 兴趣点182 7.5.3 表示地图图钉184 7.5.4 使用地图搜索做一些有趣的操作 186 7.5.5 将必应地图添加到屏幕上188 7.5.6 地图事件和图钉的设置190 7.5.7 保护数据库194 7.6 小结195 习题196 第8章 使用React和微服务来构建一个CRM 197 8.1 技术需求197 8.2 理解Docker和微服务198 8.2.1 Docker术语 198 8.2.2 微服务 199 8.2.3 使用Swagger设计REST API 200 8.3 使用Docker创建一个微服务应用程序 203 8.3.1 开始使用Docker创建一个微服务应用程序 204 8.3.2 添加服务器端路由支持 209 8.3.3 使用Docker运行服务 212 8.3.4 创建React UI 215 8.3.5 添加导航 223 8.4 小结 224 习题 225 延伸阅读 225 第9章 使用Vue.js和TensorFlow.js进行图像识别 226 9.1 技术需求226 9.2 机器学习及TensorFlow简介227 9.2.1 什么是机器学习228 9.2.2 TensorFlow及其与机器学习的关系228 9.3 项目概述229 9.4 开始在Vue中使用TensorFlow 229 9.4.1 创建基于Vue的应用程序230 9.4.2 使用Vue模板显示主页232 9.4.3 修改HelloWorld组件来支持图像分类236 9.4.4 Vue应用程序的入口点 239 9.4.5 添加姿势检测功能243 9.4.6 完成姿势检测组件250 9.5 小结 253 习题254 延伸阅读254 第10章 构建ASP.NET Core音乐库255 10.1 技术需求255 10.2 ASP.NET Core MVC简介256 10.3 项目概述258 10.4 开始使用ASP.NET Core、C#和TypeScript创建一个音乐库259 10.4.1 使用Visual Studio创建ASP.NET Core应用程序260 10.4.2 理解应用程序结构263 10.4.3 创建一个Discogs模型269 10.4.4 关联控制器275 10.4.5 添加Index视图276 10.4.6 向应用程序添加TypeScript 279 10.4.7 从ASP.NET调用TypeScript功能 283 10.5 小结 285 习题 285 延伸阅读 285 习题答案 287 |