TypeScript 是面向对象的 JavaScript。
类描述了所创建的对象共同的属性和方法。
TypeScript 支持面向对象的所有特性,比如 类、接口等。
TypeScript 类的定义与实例化
TypeScript 类定义方式如下:
class class_name {
// 类作用域
}
实例化方式如下:
var object_name = new class_name([ arguments ])
定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):
- 字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
- 构造函数 − 类实例化时调用,可以为类的对象分配内存。
- 方法 − 方法为对象要执行的操作。
访问控制修饰符
TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。
- public(默认) : 公有,可以在任何地方被访问。
- protected : 受保护,可以被其自身以及其子类和父类访问。
- private : 私有,只能被其定义所在的类访问。
代码示例:
class Person {
// 字段
private age: number;
// 构造函数
constructor(age:number) {
this.age = age;
}
// 方法
public setAge(age:number):void {this.age = age;};
public getAge():number {return this.age};
}
let personA = new Person(18);
console.log(personA.getAge()); // 18
personA.setAge(27);
console.log(personA.getAge()); //27
static 关键字
static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。
代码示例:
class Person {
static uname: string = 'zzh';
static printName(): void {
console.log(this.uname);
}
}
console.log(Person.uname); // zzh
Person.printName(); //zzh
类的继承
TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。
类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。
TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。
语法格式如下:
class child_class_name extends parent_class_name
继承类的方法重写
class Person {
// 字段
private age: number;
// 构造函数
constructor(age:number) {
this.age = age;
}
// 方法
public setAge(age:number):void {this.age = age;};
public getAge():number {return this.age};
}
let personA = new Person(18);
console.log(personA.getAge()); // 18
personA.setAge(27);
console.log(personA.getAge()); //27
// 类的继承
class Student extends Person {
// 方法重写
public setAge(age: number): void {
super.setAge(age + 100); // 调用父类的函数;
console.log('重写父类方法');
}
}
let studentA = new Student(18);
console.log(studentA.getAge()); // 18
studentA.setAge(18);
console.log(studentA.getAge()); // 118
类和接口
interface Car {
name:string;
color: string;
run(): void;
}
class BMW implements Car {
name:string = '宝马一号';
color:string = '红色';
run():void {
console.log('宝马正在路上跑~~~~')
}
}
var bmw1 = new BMW();
console.log(bmw1.name); // 宝马一号
console.log(bmw1.color); // 红色
bmw1.run(); // 宝马正在路上跑~~~~