图书目录

目录

配套资源(PPT、源码)

第1章初识TypeScript(26min)

1.1环境准备

1.1.1安装Node.js

1.1.2安装TypeScript

1.1.3安装编辑器

1.2第1段TypeScript代码

1.3调试TypeScript

1.4输入和输出目录规范

1.5体验TypeScript

1.6捕获明显错误

第2章类型基础(80min)

2.1number与bigint

2.1.1标注number类型

2.1.2number字面量

2.1.3number类型的兼容性

2.1.4number类型推断

2.1.5bigint

2.1.6小结

2.2string与模板字面量

2.2.1标注string类型

2.2.2string类型的兼容性

2.2.3模板字面量

2.2.4小结

2.3boolean

2.4undefined与null

2.5symbol

2.6数组与元组

2.6.1显式标注数组

2.6.2自动推断数组类型

2.6.3元组

2.6.4readonly数组和元组

2.6.5只读类型是非只读类型的父类型

2.6.6length属性

2.6.7小结

2.7函数

2.7.1函数声明

2.7.2函数表达式

2.7.3可选参数

2.7.4默认参数

2.7.5剩余参数

2.7.6参数对象

2.7.7函数的兼容性

2.7.8函数兼容性实例

2.7.9小结

2.8any与unknown

2.8.1any

2.8.2unknown

2.9never

2.10void

2.11对象类型

2.11.1多余属性检查

2.11.2只读属性

2.11.3可选属性

2.11.4类型继承与组合

2.11.5interface合并

2.11.6小结

2.12枚举

2.12.1为什么需要枚举

2.12.2指定枚举的值

2.12.3双向映射

2.12.4枚举的兼容性

2.12.5const enum

2.12.6小结

第3章类型进阶(36min)

3.1变化的类型

3.2类型缩窄

3.2.1相等判断

3.2.2真假判断

3.2.3typeof 

3.2.4in

3.2.5instanceof

3.2.6isArray

3.2.7标记联合类型

3.2.8自定义类型缩窄函数

3.2.9switch(true)

3.2.10小结

3.3详尽检查

3.4断言

3.4.1as断言

3.4.2赋值断言

3.4.3非空断言

3.5联合类型与交叉类型

3.5.1联合类型

3.5.2交叉类型

3.5.3小结

3.6satisfies

3.7重载签名

3.8索引访问类型

3.9索引签名

第4章类(32min)

4.1类的属性

4.2访问修饰符

4.2.1public

4.2.2protected

4.2.3private

4.3类的继承

4.3.1构造函数的严格要求

4.3.2子类重写父类方法

4.3.3子类覆盖父类属性

4.3.4override

4.3.5多重继承

4.4抽象类

4.5只读属性

4.6重载签名

4.6.1构造函数重载签名

4.6.2类方法重载签名

4.7this类型

4.8构造函数

4.9工厂函数

4.10单例模式

4.11类之间的关系

4.12参数属性

4.13getter与setter

4.14索引签名

第5章泛型(86min)

5.1泛型接口

5.2泛型函数

5.3泛型参数类型推断

5.3.1推断元组类型

5.3.2常量类型参数

5.3.3常见问题

5.4泛型类

5.4.1定义泛型类

5.4.2泛型的作用范围

5.4.3泛型约束

5.4.4默认类型参数

5.4.5泛型类与静态成员

5.4.6泛型类继承

5.4.7泛型类与接口

5.4.8泛型工厂函数

5.5实例化表达式

5.6工具类型

5.6.1PartialType

5.6.2RequiredType

5.6.3ReadonlyType

5.6.4RecordKeys,Type

5.6.5PickType, Keys

5.6.6OmitType, Keys

5.6.7ExcludeUnionType, ExcludedMembers

5.6.8ExtractType, Union

5.6.9NonNullableType

5.6.10ParametersType与ReturnTypeType

5.6.11ConstructorParametersType

5.6.12InstanceTypeType

5.6.13NoInferType

5.6.14ThisParameterTypeType

5.6.15OmitThisParameterType

5.6.16ThisTypeType

5.6.17AwaitedType

5.6.18内置的字符串操作类型

5.6.19小结

第6章类型深入

6.1类型声明的写法

6.2类型作用域

6.2.1全局作用域

6.2.2模块作用域

6.2.3局部作用域

6.3导入/导出类型

6.4环境模块

6.4.1通配环境模块

6.4.2模块增强

6.5值和类型合并

6.6namespace

6.7声明合并

6.7.1类与接口

6.7.2类与命名空间

6.7.3枚举与枚举

6.7.4枚举与命名空间

6.7.5函数与命名空间

6.7.6接口与命名空间

6.7.7namespace与namespace

6.8扩充全局类型

6.9查找模块

6.10迭代

6.10.1自定义可迭代迭代器

6.10.2异步可迭代迭代器

6.10.3生成器函数

6.10.4异步生成器函数

6.10.5小结

6.11装饰器

6.11.1装饰器历史 

6.11.2第1个装饰器

6.11.3装饰器工厂

6.11.4装饰器的位置

6.11.5方法装饰器

6.11.6属性装饰器

6.11.7getter装饰器

6.11.8setter装饰器

6.11.9类装饰器

6.11.10自动访问器装饰器

6.11.11装饰器上下文

第7章类型编程(95min)

7.1extends

7.2类型分配

7.3infer

7.3.1推断函数参数和返回值

7.3.2推断数组

7.3.3推断元组

7.3.4推断对象

7.3.5推断接口

7.3.6推断字符串

7.3.7推断与型变

7.3.8推断限定

7.4重新构造

7.4.1keyof

7.4.2映射类型

7.4.3重映射

7.5递归

7.5.1递归类型

7.5.2递归泛型

7.6数组与元组

第8章TypeScript配置

8.1项目

8.1.1extends

8.1.2configDir

8.1.3项目引用

8.1.4常用编译器选项

8.2文件

8.2.1outDir

8.2.2files与include

8.2.3exclude

8.2.4typeRoots与types

8.2.5三斜线

8.2.6rootDir

8.2.7rootDirs

8.2.8outFile

8.2.9lib

8.2.10preserveConstEnums

8.2.11小结

8.3模块

8.3.1module

8.3.2moduleResolution

8.3.3baseUrl与paths

8.3.4allowArbitraryExtensions

8.3.5allowImportingTsExtensions

8.3.6allowUmdGlobalAccess

8.3.7moduleSuffixes

8.3.8noUncheckedSideEffectImports

8.3.9resolveJsonModule

8.3.10resolvePackageJsonImports 

8.3.11resolvePackageJsonExports

8.4类型检查 

8.4.1strict

8.4.2allowUnreachableCode

8.4.3exactOptionalPropertyTypes

8.4.4noFallthroughCasesInSwitch

8.4.5noImplicitOverride

8.4.6noImplicitReturns

8.4.7索引访问

8.4.8未使用的局部变量

8.5JavaScript支持

8.6互操作约束 

8.6.1esModuleInterop

8.6.2forceConsistentCasingInFileNames

8.6.3isolatedModules

8.6.4verbatimModuleSyntax

8.7其他

8.7.1JSX

8.7.2noCheck与skipLibCheck

8.7.3useDefineForClassFields

8.8切换TypeScript语言服务版本