传统的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",}