简介
TS是什么:是js的超集,可以编译成纯javaSript。它主要提供了类型系统和对js新标准的支持。
TS特性:
- 始于js,归于js:以开发者所熟悉的语法和语义开始,TS可以编译出纯净、简洁的JS代码
- 强大的工具构建大型应用程序:静态检查,代码重构
- 先进的js:提供最新的和不断发展的JS特性
TS优缺点:
优点 | 缺点 |
---|---|
静态检查 | 学习成本高,初学难 |
可读性和可维护性 | 增加开发成本,注释 |
兼容js | 可能增加了项目体积 |
更好的开发工具支持 | 生态系统相对较小 |
数据类型
常用类型:number、string、boolean、null、undefined、symbol
数组:let arr:类型[] (常用) let arr:Array<类型>
元组:let arr:[类型1,类型2,…]
联合类型 |: 类型1|类型2…
类型别名: type 自定义名字(首字母大写) = 类型 let 变量:自定义名字
函数类型:函数的参数和函数返回值添加类型 无返回值类型为void
对象类型:type interface区别 type声明任意类型 interface只能声明对象类型 **?**代表可选属性
类型断言:使用类型断言来指定更具体的类型 (1)参数 as 参数(2)<类型> 参数
枚举:enum
任意类型any
TS高级类型
类
类:相当于写了构造函数
继承:extends
修饰符 | 说明 |
---|---|
public(共有的 | 默认,可以在类的内部和外部访问 |
protected(受保护的) | 只能在内部和子类中使用,实例不可见 |
private(私有的) | 只能在内部使用,实例和子类不可见 |
readonly(只读) | 只读属性,只能在初始化时赋值,不能修改 |
static(静态属性) | 无法再constructor函数中使用 |
交叉类型
通过使用&将多个类型合并成一个类型
let c:A&B={
name:'ff',
age:12
}
泛型
不预先指定具体类型,在使用的时候再指定具体类型的一种特性
泛型工具
- Partial把props所有属性变为可选
- Readonlu 把Props所有属性改为只读
- Pick<Type,Keys>从Type中选择属性来构建新的类型
第二个参数一定要在第一个参数中有
type P=Pick<Props,‘id’> - Record<keys,Type>构造一个对象类型,属性键位keys,属性类型Type