展开全部

主编推荐语

阐述了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
展开全部

评分及书评

评分不足
2个评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。