传统的javascript程序使用函数和基于原型的继承来创建可重用的组件,从ECMAScript2015(ECMAScript 6)开始,可以使用基于类的面向对象方式。
一、类:
定义类(class)
class Person{
name: string;
constructor(name:string){
this.name = name;
}
} let stu = new Person("张三");
继承类(extends)
class Student extends Person{
readBook(){
console.log( this.name + "is reading");
}
}
访问修饰符
默认为public
private 私有,只有内部可以访问
protected,内部和派生类可以访问
readonly 只读,必须在声明时或构造函数里被初始化
static 静态属性,可以直接通过类名访问
存取器get/set,如果只有get不带有set的存取器被推断为readonly
抽象类
abstract 定义抽象类以及定义抽象类的抽象方法。 不同于接口,抽象类里可以包含成员的实现。抽象类不会直接被示例化
二、接口
定义接口
interface MainService {
context: string
}
可选属性,可选属性就是在属性名后加? 符号
interface MainService {
context: string;
name?:string;//可选属性
}
只读属性,只在对象刚创建的时候修改值
interface MainService {
context: string;
name?:string;//可选属性
readonly gender: string;// 只读属性
}
实现接口
class Main implements MainService{
current: Date;
}
三、类与接口
1)类可以实现接口
2)接口继承接口
3)接口继承类
四、枚举
数字枚举
enum Direction {
Up = 1,
Down,
Left,
Right
}
字符串枚举
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}