互联网
类型
6.9
豆瓣评分
可以朗读
语音朗读
216千字
字数
2020-01-01
发行日期
展开全部
主编推荐语
阐述了JavaScript与TypeScript的关系,TypeScript类型系统的基础语法、编译原理等。
内容简介
TypeScript是一种由微软开发的、开源的编程语言,近两年来发展很迅猛,已经成为很多大型项目的标配。本书涵盖了TypeScript的大部分知识点,并对其进行了细致的讲解;本书示例丰富、简单易懂,你甚至可以直接把这些例子用于自己的开发工作;本书还对TypeScript编译原理进行了深入的剖析,力争让读者知其然,并知其所以然。本书不仅为TypeScript初学者安排了与JavaScript相关的基础知识,而且对高级编程技巧、编译原理进行了深入浅出的解读,相信对于想深入了解TypeScript的开发者来说,通过阅读本书也能获得较大的提升。
目录
- 版权信息
- 译者序
- 前言
- 第1章 为什么要使用TypeScript
- 1.1 开始使用TypeScript
- 1. TypeScript版本
- 2. 获取源代码
- 1.2 选择TypeScript的理由
- 1. TypeScript的类型系统
- 2. 支持未来的JavaScript所具有的功能
- 1.3 总结
- 第2章 JavaScript常见语法
- 2.1 相等
- 2.2 引用
- 1. 变化将会贯穿整个引用
- 2. 引用相等
- 2.3 null和undefined
- 1. 检查是否相等
- 2. 检查根级别上的undefined
- 3. 限制显式地使用undefined
- 4. Node风格的回调函数
- 5. 不要把undefined作为有效的表示方式
- 6. JSON和序列化
- 7. 小结
- 2.4 this
- 2.5 闭包
- 2.6 数字
- 1. 核心类型
- 2. 十进制
- 3. 整数
- 4. big.js
- 5. NaN
- 6. 无穷
- 7. 最小值
- 2.7 truthy
- 第3章 JavaScript 新语法特性
- 3.1 类
- 1. 继承(extends)
- 2. 静态(static)
- 3. 访问修饰符
- 4. 抽象(abstract)
- 5. 构造器(constructor)
- 6. 属性初始化
- 7. IIFE发生了什么
- 8. __extends
- 3.2 箭头函数
- 1. 箭头函数的用处
- 2. 箭头函数是危险的
- 3. 箭头函数和使用this的库
- 4. 箭头函数和继承
- 5. 快速返回对象
- 3.3 rest参数
- 3.4 let
- 1. 函数会创建新的作用域
- 2. 生成JavaScript
- 3. switch
- 4. 闭包中的let
- 5. 小结
- 3.5 const
- 1. const声明必须初始化
- 2. 赋值符号的左边不能是一个常量
- 3. 块作用域
- 4. 深层次的不变性
- 3.6 解构
- 1. 对象解构
- 2. 数组解构
- 3. 生成JavaScript
- 4. 小结
- 3.7 扩展运算符
- 1. apply
- 2. 在解构中使用
- 3. 数组扩展
- 4. 对象扩展
- 5. 小结
- 3.8 for...of
- 1. 生成JavaScript
- 2. 限制
- 3. 小结
- 3.9 迭代
- 3.10 模板字符串
- 1. 字符串插值
- 2. 多行字符串
- 3. 标记模板
- 4. 生成JavaScript
- 5. 小结
- 3.11 Promise
- 1. 回调函数风格的代码
- 2. 使用Promise处理异步和回调函数
- 3. 并行流程控制
- 4. 将回调函数转为Promise
- 3.12 generators
- 1. 惰性迭代器
- 2. 外部控制执行
- 3.13 async/await
- 1. 产生JavaScript
- 2. TypeScript 对 async/await 的支持
- 第4章 TypeScript项目构成
- 4.1 编译上下文
- 1. tsconfig.json
- 2. 指定文件
- 4.2 声明空间
- 1. 类型声明空间
- 2. 变量声明空间
- 4.3 模块
- 1. 全局模块
- 2. 文件模块
- 3. globals.d.ts
- 4.4 命名空间
- 4.5 动态导入表达式
- 第5章 快速创建TypeScript项目
- 5.1 在Node.js中使用TypeScript
- 5.2 在浏览器中使用TypeScript
- 1. 通用设置
- 2. 快速开始
- 3. 项目设置详解
- 4. 发布应用
- 5.3 创建一个TypeScript模块
- 第6章 TypeScript类型系统
- 6.1 基本概念
- 1. 基本注解
- 2. 基本类型注解
- 3. 数组注解
- 4. 接口注解
- 5. 内联类型注解
- 6. 特殊类型
- 7. 泛型
- 8. 联合类型注解
- 9. 交叉类型
- 10. 元组类型
- 11. 类型别名
- 6.2 迁移JavaScript代码至TypeScript
- 1. 减少错误
- 2. 第三方JavaScript代码
- 3. 第三方npm模块
- 4. 额外的非JavaScript资源
- 6.3 @types
- 1. 使用@types
- 2. 全局@types
- 3. 模块@types
- 4. 控制全局
- 6.4 环境声明
- 1. 声明文件
- 2. 变量
- 6.5 接口
- 1. 类可以实现接口
- 2. 注意:并非每个接口都很容易实现
- 6.6 枚举
- 1. 数字枚举与数字类型
- 2. 数字枚举与字符串类型
- 3. 改变与数字枚举相关联的数字
- 4. 使用数字枚举做标记
- 5. 字符串枚举
- 6. 常量枚举
- 7. 有静态方法的枚举
- 8. 开放式枚举
- 6.7 lib.d.ts
- 1. 观察lib.d.ts的内容
- 2. 修改本地类型
- 3. 使用你自己定义的lib.d.ts
- 4. 编译目标对lib.d.ts的影响
- 5. --lib选项
- 6. 在旧JavaScript引擎中使用polyfill
- 6.8 函数
- 1. 参数注解
- 2. 返回类型注解
- 3. 可选参数
- 4. 重载
- 5. 声明函数
- 6.9 可调用
- 1. 一个实例
- 2. 箭头函数
- 3. 可实例化
- 6.10 类型断言
- 1. as Foo与<foo>
- 2. 类型断言与类型转换
- 3. 类型断言被认为是有害的
- 4. 双重断言
- TypeScript怎么确定单个断言是否足够
- 6.11 Freshness
- 1. 允许额外的属性
- 2. 用例:React state
- 6.12 类型保护
- 1. typeof
- 2. instanceof
- 3. in
- 4. 字面量类型保护
- 5. strictNullChecks 编译属性下的null 和 undefined
- 6. 使用自定义的类型保护
- 7. 类型保护和回调函数
- 6.13 字面量类型
- 1. 字符串字面量
- 2. boolean和number字面量
- 3. 推断
- 4. 用例:基于字符串的枚举
- 6.14 readonly
- 1. readonly用例
- 2. 其他用例
- 3. readonly与const
- 6.15 泛型
- 1. 动机和示例
- 2. 设计模式
- 6.16 类型推断
- 1. 定义变量
- 2. 函数返回类型
- 3. 赋值
- 4. 结构化
- 5. 解构
- 6. 警告
- 6.17 类型兼容性
- 1. 稳定性
- 2. 结构化
- 3. 变体
- 4. 函数
- 5. 枚举
- 6. 类
- 7. 泛型
- 8. 脚注:不变性(Invariance)
- 6.18 never
- 1. 用例:详细的检查
- 2. never与void的差异
- 6.19 辨析联合类型
- 1. 详细的检查
- 2. switch
- 3. strictNullChecks
- 4. 版本控制
- 5. Redux
- 6.20 索引签名
- 1. TypeScript索引签名
- 2. 声明一个索引签名
- 3. 所有成员必须符合字符串索引签名
- 4. 使用一组有限的字符串字面量
- 5. 同时拥有string和number类型的索引签名
- 6. 设计模式:索引签名的嵌套
- 7. 从索引签名中排除某些属性
- 6.21 类型移动
- 1. 复制类型和值
- 2. 捕获变量的类型
- 3. 捕获类成员的类型
- 4. 捕获字符串类型
- 5. 捕获键的名称
- 6.22 异常处理
- 1. 错误子类型
- 2. 尽量使用Error
- 3. 并不是一定要throw一个错误
- 4. exceptional的用例
- 6.23 混合
- 1. 创建一个构造函数
- 2. 扩展一个类并返回它
- 6.24 ThisType
- 第7章 关于 JSX
- 7.1 React JSX
- 1. 程序安装
- 2. HTML标签与组件
- 3. 类型检查
- 4. 默认的props
- 7.2 非React JSX
- 第8章 TypeScript编译选项设置
- 8.1 boolean选项
- 8.2 noImplicitAny
- 8.3 strictNullChecks
- 1. 非空断言操作符
- 2. 明确赋值断言操作符
- 第9章 TypeScript错误处理
- 9.1 解读错误
- 1. 错误信息分类
- 2. 如何在 IDE 提示工具中显示一个错误
- 9.2 常见的错误
- 1. TS2304
- 2. TS2307
- 3. TS1148
- 4. 捕获不能有类型注解的简短变量
- 5. 接口ElementClass不能同时扩展两个Component类型
- 第10章 开发与测试工具
- 10.1 npm
- 1. npm的快速常见设置
- 2. 安全性
- 3. npm脚本——脚本里的--
- 4. 公有包和私有包
- 10.2 在Jest中使用TypeScript
- 1. 步骤1:安装Jest
- 2. 步骤2:配置Jest
- 3. 步骤3:运行测试
- 4. 选择Jest的理由
- 10.3 Prettier
- 1. 安装程序
- 2. 使用方法
- 10.4 Husky
- 10.5 ESlint
- 1. 安装
- 2. 配置
- 3. 运行
- 4. 在VS Code 中的配置
- 10.6 Changelog
- 1. 提交约定信息
- 2. 安装步骤
- 3. 发布
- 第11章 提示与建议
- 11.1 名义化类型
- 1. 使用字面量类型
- 2. 使用枚举
- 3. 使用接口
- 11.2 状态函数
- 11.3 柯里化
- 11.4 泛型的实例化类型
- 11.5 对象字面量的惰性初始化
- 1. 最好的解决方案
- 2. 快速解决方案
- 3. 折中的解决方案
- 11.6 类是有用的
- 11.7 默认导出被认为是有害的
- 1. 可发现性差
- 2. 自动完成
- 3. 与CommonJS互用
- 4. 防止拼写错误
- 5. 关于TypeScript 自动导入
- 6. 关于再次导出
- 7. 关于动态导入
- 8. 当不是类也不是函数时,需要两行语句
- 11.8 减少setter属性的使用
- 11.9 谨慎使用--outFile
- 1. 运行时错误
- 2. 快速编译
- 3. 全局作用域
- 4. 难以分析
- 5. 难以扩展
- 6. _references.ts
- 7. 代码重用
- 8. 多目标
- 9. 单独编译
- 11.10 TypeScript的静态构造函数
- 11.11 单例模式
- 11.12 函数参数
- 11.13 构建切换
- 11.14 barrel
- 11.15 创建数组
- 11.16 类型安全的Event Emitter
- 11.17 Reflect Metadata
- 1. 基础
- 2. 获取类型信息
- 3. 自定义metadataKey
- 4. 用例
- 11.18 协变与逆变
- 1. 一个有趣的问题
- 2. 扩展讲解
- 3. 其他类型
- 第12章 TypeScript代码风格指南与代码约定
- 12.1 变量和函数
- 12.2 类
- 12.3 接口
- 12.4 类型别名
- 12.5 命名空间
- 12.6 枚举类型
- 12.7 null和undefined
- 12.8 格式化
- 1. 引号
- 2. 空格
- 3. 分号
- 4. 数组
- 5. type和interface
- 第13章 TypeScript编译原理
- 13.1 编译器
- 1. BYOTS
- 2. 语法和语义
- 3. 处理概览
- 4. 文件:核心工具
- 5. 文件:关键数据结构
- 6. 文件:系统
- 13.2 程序
- 1. CompilerHost的使用
- 2. SourceFile
- 13.3 抽象语法树
- 1. Node节点
- 2. SourceFile
- 3. AST技巧:访问子节点
- 4. AST技巧:SyntaxKind枚举
- 5. AST杂项
- 13.4 扫描器
- 1. 解析器对扫描器的使用
- 2. 扫描器状态
- 3. 独立扫描器
- 13.5 解析器
- 1. 程序对解析器的使用
- 2. 用例
- 3. 解析器函数
- 13.6 绑定器
- 1. 符号
- 2. 检查器对绑定器的使用
- 3. 绑定器函数
- 4. 绑定器声明
- 5. 绑定器容器
- 6. 绑定器符号表
- 7. 绑定器错误报告
- 13.7 检查器
- 1. 程序对检查器的使用
- 2. 与发射器的联系
- 3. 全局命名空间合并
- 4. 检查器错误报告
- 13.8 发射器
- 1. Promgram对发射器的使用
- 2. 发射器函数
- 3. 发射器SourceMap
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。