Skip to content
TNotes.typescript
Search
K
Main Navigation
👀 README
Menus
🏠 Home
⚙️ Settings
📒 TNotes
📂 TNotes.yuque
Appearance
TypeScript 笔记
1. 学习资料
📂
✅ 0286
1.1
学习资料
✅ 0002
1.2
TypeScript(阮一峰)
✅ 0289
1.3
typescript-book 项目
✅ 0290
1.4
clean-code-typescript 项目
✅ 0107
1.5
type-challenges 项目
✅ 0054
1.6
术语表
✅ 0039
1.7
roadmap
✅ 0073
1.8
TS 官方文档
✅ 0074
1.9
TS Github 仓库
✅ 0017
1.10
特殊类型之间的兼容性
✅ 0285
1.11
TS 错误码
✅ 0075
1.12
DefinitelyTyped 项目
2. TS 简介
📂
✅ 0008
2.1
TS 简介
✅ 0001
2.2
TS 是什么
✅ 0003
2.3
TS 的发展简史
✅ 0005
2.4
TS 的博客
✅ 0006
2.5
面向对象的思维方式
✅ 0007
2.6
动态类型 vs. 静态类型
✅ 0076
2.7
TS 的优势与劣势
✅ 0077
2.8
TS 在前、后端领域的应用
3. 学前准备
📂
✅ 0044
3.1
学前准备
✅ 0004
3.2
类型 vs. 值
✅ 0009
3.3
类型声明和类型推断
✅ 0010
3.4
TS 的编译
✅ 0011
3.5
TS Playground
✅ 0012
3.6
tsc 快速入门
✅ 0078
3.7
tsconfig.json 快速入门
✅ 0013
3.8
ts-node 快速入门
✅ 0041
3.9
nodemon 快速入门
✅ 0042
3.10
ts-node-dev 快速入门
4. 顶层类型和底层类型
📂
✅ 0046
4.1
顶层类型和底层类型
✅ 0014
4.2
any 类型
✅ 0015
4.3
unknown 类型
✅ 0016
4.4
never 类型
✅ 0079
4.5
void 类型
✅ 0017
4.6
特殊类型之间的兼容性
5. 类型系统基础知识
📂
✅ 0287
5.1
类型系统基础知识
✅ 0018
5.2
boolean 类型
✅ 0019
5.3
string 类型
✅ 0020
5.4
number 类型
✅ 0021
5.5
bigint 类型
✅ 0022
5.6
symbol 类型
✅ 0023
5.7
object 类型和 Object 类型
✅ 0024
5.8
undefined 类型和 null 类型
✅ 0047
5.9
包装对象类型
✅ 0025
5.10
字面量类型
✅ 0026
5.11
联合类型
✅ 0027
5.12
交叉类型
✅ 0028
5.13
type 关键字
✅ 0029
5.14
typeof 运算符
✅ 0030
5.15
类型作用域
6. 类型兼容性
📂
✅ 0031
6.1
类型兼容性
✅ 0067
6.2
结构子类型
✅ 0072
6.3
类型的父子关系
✅ 0068
6.4
对象类型的兼容性规则
✅ 0069
6.5
函数类型的兼容性规则
✅ 0071
6.6
类类型的兼容性规则
⏰ 0070
6.7
泛型类型的兼容性规则
✅ 0017
6.8
特殊类型之间的兼容性
⏰ 0080
6.9
协变与逆变
⏰ 0081
6.10
双向协变问题
7. 数组类型
📂
✅ 0032
7.1
数组类型
✅ 0082
7.2
数组的两种类型声明方式
✅ 0083
7.3
只读数组 ReadonlyArray
✅ 0288
7.4
readonly 数组在函数参数中的兼容性差异分析
✅ 0084
7.5
数组的类型推断
✅ 0085
7.6
多维数组
8. 元组类型
📂
✅ 0036
8.1
元组类型
✅ 0086
8.2
元组可选元素
✅ 0087
8.3
元组剩余元素
✅ 0088
8.4
元组只读元素
✅ 0089
8.5
具名元组
✅ 0090
8.6
元组 vs. 数组
9. 函数类型
📂
✅ 0034
9.1
函数类型
✅ 0091
9.2
函数表达式类型
✅ 0092
9.3
可选参数与默认参数
✅ 0093
9.4
剩余参数
✅ 0094
9.5
函数重载
✅ 0095
9.6
构造函数类型
✅ 0096
9.7
函数的 2 个特殊返回类型 void、never
✅ 0097
9.8
函数的 this 参数
✅ 0098
9.9
函数类型的多种声明方式
10. 对象类型
📂
✅ 0033
10.1
对象类型
✅ 0099
10.2
对象只读属性
✅ 0100
10.3
对象可选属性
✅ 0101
10.4
对象索引签名
✅ 0102
10.5
对象的额外属性检查
✅ 0103
10.6
对象类型的扩展
✅ 0104
10.7
使用 Record 工具类型约束对象
11. 接口类型
📂
✅ 0052
11.1
interface 关键字
✅ 0105
11.2
接口的继承
✅ 0106
11.3
接口的合并(声明合并)
✅ 0053
11.4
type vs. interface
12. Class 类型
📂
✅ 0035
12.1
class 类型
✅ 0066
12.2
类属性严格初始化
✅ 0056
12.3
类中的参数属性
✅ 0057
12.4
抽象类
✅ 0058
12.5
类中的存取器
✅ 0059
12.6
类实现接口
✅ 0060
12.7
类中的只读属性
✅ 0061
12.8
类的静态成员
✅ 0062
12.9
类的三个可访问性修饰符
✅ 0064
12.10
类的继承
✅ 0063
12.11
子类重写父类同名成员
✅ 0055
12.12
类中的 this
✅ 0065
12.13
类与函数的选择
✅ 0111
12.14
类的类型
✅ 0114
12.15
类的静态块
13. 泛型
📂
✅ 0038
13.1
泛型
✅ 0115
13.2
泛型类
✅ 0116
13.3
泛型函数
✅ 0117
13.4
泛型接口
✅ 0118
13.5
泛型约束
✅ 0121
13.6
泛型默认值
✅ 0122
13.7
泛型的最佳实践
14. Enum 类型
📂
✅ 0037
14.1
Enum 类型
✅ 0130
14.2
枚举 vs. 对象字面量 as const
✅ 0123
14.3
数字枚举
✅ 0124
14.4
字符串枚举
✅ 0227
14.5
字符串枚举 vs 数字枚举
✅ 0125
14.6
异构枚举
✅ 0126
14.7
常量枚举(const enum)
✅ 0127
14.8
外部枚举(ambient enum)
✅ 0129
14.9
反向映射
15. 类型断言
📂
✅ 0051
15.1
类型断言
✅ 0131
15.2
双重断言
16. 模块
📂
⏰ 0134
16.1
ES 模块系统
⏰ 0135
16.2
CommonJS 模块系统
⏰ 0136
16.3
模块解析策略
⏰ 0137
16.4
相对导入 vs. 非相对导入
⏰ 0138
16.5
模块解析的 baseUrl 和 paths
⏰ 0139
16.6
导出和导入类型
⏰ 0140
16.7
export type 和 import type
⏰ 0141
16.8
默认导出 vs. 命名导出
⏰ 0142
16.9
动态导入
⏰ 0143
16.10
模块的类型声明
⏰ 0144
16.11
esModuleInterop 配置项
⏰ 0145
16.12
allowSyntheticDefaultImports 配置项
17. namespace
📂
⏰ 0146
17.1
namespace 关键字
⏰ 0147
17.2
命名空间的基本使用
⏰ 0148
17.3
嵌套命名空间
⏰ 0149
17.4
命名空间的合并
⏰ 0150
17.5
命名空间 vs. 模块
⏰ 0151
17.6
何时使用命名空间
⏰ 0152
17.7
命名空间的别名
⏰ 0153
17.8
命名空间的导出
18. 装饰器
📂
⏰ 0154
18.1
装饰器的概念
⏰ 0155
18.2
装饰器的启用(experimentalDecorators)
⏰ 0156
18.3
类装饰器
⏰ 0157
18.4
方法装饰器
⏰ 0158
18.5
访问器装饰器
⏰ 0159
18.6
属性装饰器
⏰ 0160
18.7
参数装饰器
⏰ 0161
18.8
装饰器的执行顺序
⏰ 0162
18.9
装饰器工厂
⏰ 0163
18.10
装饰器组合
19. 装饰器(旧语法)
📂
⏰ 0164
19.1
Stage 2 装饰器提案
⏰ 0165
19.2
旧装饰器 vs. 新装饰器
⏰ 0166
19.3
旧装饰器的元数据
⏰ 0167
19.4
reflect-metadata 库
⏰ 0168
19.5
装饰器的迁移指南
20. declare 关键字
📂
⏰ 0169
20.1
declare 的作用
⏰ 0170
20.2
declare 声明函数
⏰ 0171
20.3
declare 声明变量
⏰ 0172
20.4
declare 声明类
⏰ 0173
20.5
declare 声明枚举
⏰ 0174
20.6
declare 声明命名空间
⏰ 0175
20.7
declare module 扩展模块
⏰ 0176
20.8
declare global 扩展全局
⏰ 0177
20.9
环境声明的使用场景
21. d.ts 类型声明文件
📂
⏰ 0178
21.1
类型声明文件的作用
⏰ 0179
21.2
自动生成 d.ts 文件
⏰ 0180
21.3
手动编写 d.ts 文件
⏰ 0181
21.4
三斜线指令
⏰ 0182
21.5
@types 包的使用
⏰ 0183
21.6
typeRoots 和 types 配置
⏰ 0184
21.7
模块的类型声明
⏰ 0185
21.8
全局类型声明
⏰ 0186
21.9
UMD 模块的类型声明
⏰ 0187
21.10
发布类型声明文件
22. 类型运算
📂
✅ 0229
22.1
类型运算
✅ 0188
22.2
keyof 运算符
✅ 0189
22.3
in 运算符
✅ 0190
22.4
extends 条件类型
✅ 0191
22.5
infer 关键字
✅ 0192
22.6
索引访问类型
✅ 0194
22.7
条件类型的分布式特性
✅ 0195
22.8
映射类型
✅ 0196
22.9
模板字面量类型
✅ 0197
22.10
satisfies 运算符
23. 类型工具
📂
✅ 0108
23.1
类型工具
✅ 0205
23.2
Partial
✅ 0206
23.3
Required
✅ 0207
23.4
Readonly
✅ 0208
23.5
Record
✅ 0209
23.6
Pick
⏰ 0210
23.7
Omit
⏰ 0211
23.8
Exclude
⏰ 0212
23.9
Extract
⏰ 0213
23.10
NonNullable
⏰ 0214
23.11
ReturnType
⏰ 0215
23.12
Parameters
⏰ 0216
23.13
ConstructorParameters
⏰ 0217
23.14
InstanceType
⏰ 0218
23.15
ThisParameterType
⏰ 0219
23.16
OmitThisParameter
⏰ 0220
23.17
Awaited
⏰ 0230
23.18
内置字符串操作类型
⏰ 0221
23.19
自定义工具类型
24. 注释指令
📂
✅ 0228
24.1
注释指令
✅ 0222
24.2
@ts-ignore
✅ 0223
24.3
@ts-expect-error
✅ 0291
24.4
@ts-ignore vs @ts-expect-error
✅ 0224
24.5
@ts-nocheck
✅ 0225
24.6
@ts-check
✅ 0226
24.7
JSDoc 类型注释
25. tsconfig.json 文件
📂
⏰ 0232
25.1
tsconfig.json 的作用
⏰ 0233
25.2
编译选项分类概览
⏰ 0234
25.3
target 和 lib
⏰ 0235
25.4
module 和 moduleResolution
⏰ 0236
25.5
strict 模式
⏰ 0237
25.6
strictNullChecks
⏰ 0238
25.7
strictFunctionTypes
⏰ 0239
25.8
noImplicitAny
⏰ 0240
25.9
noImplicitThis
⏰ 0241
25.10
alwaysStrict
⏰ 0242
25.11
outDir 和 rootDir
⏰ 0243
25.12
include 和 exclude
⏰ 0244
25.13
files 选项
⏰ 0245
25.14
extends 继承配置
⏰ 0246
25.15
references 项目引用
⏰ 0247
25.16
incremental 增量编译
⏰ 0248
25.17
常用编译配置组合
26. tsc 命令
📂
⏰ 0257
26.1
tsc 命令的基本用法
⏰ 0258
26.2
tsc 常用参数
⏰ 0259
26.3
tsc --watch 模式
⏰ 0260
26.4
tsc --project 指定配置文件
⏰ 0261
26.5
tsc --outDir 和 --outFile
⏰ 0262
26.6
tsc --declaration 生成声明文件
⏰ 0263
26.7
tsc --sourceMap 生成源码映射
⏰ 0264
26.8
tsc --noEmit 只检查不输出
⏰ 0265
26.9
tsc --showConfig 显示配置
⏰ 0266
26.10
tsc --listFiles 列出编译文件
⏰ 0267
26.11
tsc --init 初始化配置
27. 实战技巧
📂
⏰ 0268
27.1
常见类型错误处理
⏰ 0269
27.2
类型收窄技巧
⏰ 0270
27.3
类型守卫的使用
⏰ 0271
27.4
类型推断的最佳实践
⏰ 0272
27.5
避免类型断言的滥用
⏰ 0273
27.6
React 中的 TypeScript
⏰ 0274
27.7
Vue 中的 TypeScript
⏰ 0275
27.8
Node.js 中的 TypeScript
⏰ 0276
27.9
第三方库的类型处理
28. 深入原理
📂
⏰ 0045
28.1
深入原理
✅ 0043
28.2
Source Map 的基本概念和原理
⏰ 0249
28.3
TS 编译流程
⏰ 0250
28.4
AST 抽象语法树
⏰ 0251
28.5
类型检查原理
⏰ 0252
28.6
类型擦除
⏰ 0253
28.7
声明空间与变量空间
⏰ 0254
28.8
类型系统的健全性
⏰ 0255
28.9
结构类型系统的实现
⏰ 0256
28.10
编译性能优化
29. 进阶话题
📂
⏰ 0277
29.1
高级类型技巧
⏰ 0278
29.2
类型体操
⏰ 0279
29.3
类型安全的设计模式
⏰ 0280
29.4
TS 与函数式编程
⏰ 0281
29.5
TS 性能优化
⏰ 0282
29.6
大型项目的类型组织
⏰ 0283
29.7
monorepo 中的 TypeScript
30. TS 7.0
📂
⏰ 0284
30.1
typescript-go 项目
31. 踩坑记录
📂
✅ 0231
31.1
VSCode 打开 TS 项目提示 Intellisense 问题
32. xxx
📂
⏰ 0292
32.1
new
⏰ 0293
32.2
new
🗓 创建时间
👣 9218 | 2024年09月22日 周日 23:13:07
♻️ 更新时间
👣 9737 | 2026年02月23日 周一 14:27:55
✅ 完成进度
146 / 274 ≈ 53%