本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新
学习 TS 的原因
- 社区活跃度
和 JS 的对比
- 总体:超集,可以创建复杂代码,JS 只能用于创建动态网页
- 类型:支持强类型
- 可以在编译过程发现错误,而 JS 有些问题只能在运行时发现
带来了什么
- 类型安全
- 先进特性
- 完整的 Tool Chain
推荐
从编译过程去发现一些语法糖:TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript
TS 基础
基础类型
- boolean, number, string 是三大基本类型
any, unknown, void 三大未定类型
- any 就是 TS 对动态类型的支持
- unknown 表示未定的值,但是当确定以后,除非它是 any 类型,否则它的类型不能再被改变
- void 和 clang 一样表示无类型
never 类型表示一些不能确定类型,但是却又是不会出现的情况,为了确保代码的完备性而写上的,比如设置就是死循环的函数的返回值和异常中止函数
- 数组,元组
函数类型
需要有定义输入和输出
- 输入:可选和默认
- 输出:支持自动推断
- 重载
接口
- 定义:为了定义对象类型
- 特点
- 可选
- 只读
- 可以描述函数
- 自定义熟悉
- 灵活 Duck typing
类
- 增加了访问性修饰符
- 抽象类
- interface 约束类, implement 实现
和接口的区别
- 类是具体的对象模板
- 接口是定义对象的形状,大致的状态
- 某些情况下确实可以交替使用
TS 进阶
高级类型
- 联合
- 交叉
- 类型断言 const a as number
- 别名 type
- 和 interface 的区别
泛型
作用
基本使用
工具类型:
基础操作符
- typeof
- keyof 获取所有键
- 索引访问
- 泛型约束
常用工具类型
可以通过新来一个别名的方式来将他们定义为这些属性
- 可选
- 必选
- 只读
TS 重要实战内容
声明文件
- declare 第三方库中的类型声明文件
.d.ts声明文件定义- @types 第三方库的类型包
- tsconfig.json 定义 TS 配置