ts进阶
1、字符串字面量类型和类型别名都是使用type进行定义;
2、元组
(1)简单例子
let tom:[string,number] = ['Tom',25]
当直接对元组类型的变量进行初始化或者赋值的时候,需要提供所有元组类型中指定的项
(2)越界的元素
当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型
let tom:[string,number];
tom=['Tom',25];
tom.push('male');
tom.push(true);//报错
3、枚举
枚举类型用于取值被限定在一定范围内的场景,比如一周只有七天,颜色限定为红绿蓝等
(1)简单的例子
枚举使用enum关键字来定义:
enum Days {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
枚举成员会被赋值为从0开始递增的数字,同时也会对枚举值到枚举名进行反向映射
enum Days {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
console.log(Days['Sun'] === 0);//true
(2)手动赋值
也可以给枚举项手动赋值
enum Days {Sun = 7,Mon = 1,Tue,Wed,Thu,Fri,Sat};
console.log(Days['Sun'] === 7);//true
console.log(Days['Mon'] === 1);//true
console.log(Days['Tue'] === 2);//true
(3)常数项和计算所得项
(4)常数枚举
常数枚举是使用const enum 定义的枚举类型
const enum Directions {
Up,
Down,
Left,
Right
}
let directions = [Directions.Up,Directions.down,Directions.Left,Directions.Right]
常数枚举与普通枚举的区别是,它会在编译阶段被删除,并且不能包含计算成员
(5)外部枚举
外部枚举是使用declare enum 定义的枚举类型
declare enum Directions {
Up,
Down,
Left,
Right
}
let directions = [Directions.Up,Directions.down,Directions.Left,Directions.Right]
4、类
(1)public private和protected
public修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是public
private修饰的属性或者方法是私有的,不能在声明它的类的外部访问
proctected修饰的属性或者方法是受保护的,他和private类似,区别是它在子类中也是允许被访问的
当构造函数修饰为private时,该类不允许被继承或者实例化
当构造函数修饰为protected时,该类只允许被继承
(2)参数属性
(3)resdonly
只读属性关键字,只允许出现在属性声明或索引签名或构造函数中
注意如果readonly和其他访问修饰符同时存在的话,需要写在其后面
(4)抽象类
abstract用于定义抽象类和其中的抽象方法
抽象类是不允许被实例化的
抽象类中的抽象方法必须被子类实现
(5)类的类型