为什么要学习TS
TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TS增强了类型安全,提高了生产力。
TypeScript VS JavaScript
ts是js的超集,用于解决大型项目的代码复杂性,它可以在编译期间发现并纠正错误,是强类型,支持静态和动态类型的检测,不允许改变变量的数据类型。js是一种脚本语言,用于创建动态网页,只能在运行时发现错误,是动态弱类型语言,变量可以被赋值成不同类型。
TS基础
基础类型
1.boolean、number、string
2.枚举enum
3.any、unknown、void
4.never
5.数组类型[]
6.元组类型tuple
函数类型
定义:TS定义函数类型时要定义输入参数类型和输出类型
输入参数:参数支持可选参数和默认参数
输出参数:输出可以自行推断,没有返回值时,默认返回void类型
函数重载:名称相同但参数不同,可以通过重载支持多种类型
接口interface
定义:接口是为了定义对象类型
特点:
-可选属性:?
-只读属性:readonly
-可以描述函数类型
-可以描述自定义属性
总结:接口非常灵活duck typing
类
定义:写法和JS差不多,增加了一些定义
特点:
-增加了public、private、protected修饰符
-抽象类: 只能被继承,不能被实例化; 作为基类,抽象方法必须被子类实现
-interface约束类,使用implements关键字
TS进阶
高级类型
-联合类型|
-交叉类型&
-类型断言
-类型别名(type VS interface)
相同点:都可以定义对象或函数;都允许继承。
差异点:interface是TS用来定义对象,type是用来定义别名方便使用;
type可以定义基础类型,interface不行;
interface可以合并重复声明,type不行。
泛型
基本定义:
1.泛型的语法是<>里面写参数类型,一般用T表示
2.使用时有两种方法指定类型: 定义要使用的类型;通过TS类型推断,自动推断类型
3.泛型的作用是临时占位,之后通过传来的类型进行推导
基础操作符
-typeof:获取类型
-keyof:获取所有键
-in:遍历枚举类型
-T[K]:索引访问
extends:泛型约束
常用工具类型
-Partial:将类型属性变为可选
-Required:将类型属性变为必选
-Readonly:将类型属性变为只读
-Pick、Record...
TS实战
声明文件
-declare:三方库需要类型声明文件
-.d.ts:声明文件定义
-@types:三方库TS类型包
-tsconfing.json:定义TS的配置