专注集团网站建设,辽宁同鑫建设有限公司网站,保定建站价格,合肥网站建设排名在早期的JavaScript开发中#xff08;ES5#xff09;我们需要通过函数和原型链来实现类和继承#xff0c;从ES6开始#xff0c;引入了class关键字#xff0c;可以更加方便的定义和使用类。TypeScript作为JavaScript的超集#xff0c;也是支持使用class关键字的#xff0…在早期的JavaScript开发中ES5我们需要通过函数和原型链来实现类和继承从ES6开始引入了class关键字可以更加方便的定义和使用类。TypeScript作为JavaScript的超集也是支持使用class关键字的并且还可以对类的属性和方法等进行静态类型检测。类的定义我们来定义一个Person类class Person {// 定义类的属性name: stringage: number// 构造函数constructor(name: string, age: number) {this.name namethis.age age}// 定义类的方法running() {console.log(${this.name} is running);}
}
// 实例化
let cloud: Person new Person(cloud, 18)
cloud.running()我们可以声明类的属性在类的内部声明类的属性以及对应的类型,如果类型没有声明那么它们默认是any的我们也可以给属性设置初始化值在默认的strictPropertyInitialization模式下面我们的属性是必须初始化的如果没有初始化那么编译时就会报错类可以有自己的构造函数constructor当我们通过new关键字创建一个实例时构造函数会被调用构造函数不需要返回任何值默认返回当前创建出来的实例类中可以有自己的函数定义的函数称之为方法类的继承面向对象的其中一大特性就是继承继承不仅仅可以减少我们的代码量也是多态的使用前提。我们使用extends关键字来实现继承子类中使用super来访问父类。我们来看一下Student类继承自Personclass Student extends Person {sno: numberconstructor(name: string, age: number, sno: number) {super(name, age);this.sno sno}studying() {console.log(${this.name} is studying);}
}let tifa: Student new Student(tifa, 18, 123)
tifa.studying()类的成员修饰符在TypeScript中类的属性和方法支持三种修饰符 public、private、protected,public 修饰的是在任何地方可见、公有的属性或方法默认编写的属性就是public的private 修饰的是仅在同一类中可见、私有的属性或方法protected 修饰的是仅在类自身及子类中可见、受保护的属性或方法抽象类abstract我们知道继承是多态使用的前提。所以在定义很多通用的调用接口时, 我们通常会让调用者传入父类通过多态来实现更加灵活的调用方式。但是父类本身可能并不需要对某些方法进行具体的实现所以父类中定义的方法,我们可以定义为抽象方法。什么是 抽象方法? 在TypeScript中没有具体实现的方法(没有方法体)就是抽象方法。抽象方法必须存在于抽象类中抽象类是使用abstract声明的类抽象类有如下的特点抽象类是不能被实例化也就是不能通过new创建,抽象方法必须被子类实现否则该类必须是一个抽象类// 定义抽象类和抽象方法
abstract class Shape {abstract getArea(): number
}// 子类需要实现抽象方法
class Circle extends Shape {private r: numberconstructor(r: number) {super();this.r r}getArea(): number {return this.r * this.r * Math.PI;}
}接口继承与实现接口和类一样是可以进行继承的也是使用extends关键字并且我们会发现接口是支持多继承的类不支持多继承接口定义后也是可以被类实现的(使用implements)如果被一个类实现那么在之后需要传入接口的地方都可以将这个类传入这就是面向接口开发interface Animal {running: () void
}// 接口可以继承其他接口多个用逗号分隔
interface Person extends Animal {eating: () void
}// 类可实现多个接口多个用逗号分隔
class Student implements Person {eating(): void {console.log(student is eating)}running(): void {console.log(student is running)}
}枚举类型枚举类型是为数不多的TypeScript特性有的特性之一枚举其实就是将一组可能出现的值一个个列举出来定义在一个类型中这个类型就是枚举类型enum Direction {LEFT,RIGHT,TOP,BOTTOM
}function turnDirection(direction: Direction) {switch (direction) {case Direction.LEFT:console.log(向左转)break;case Direction.RIGHT:console.log(向右转)break;}
}