通过网站做跳板,有什么网站可以免费做图,网站空间购买多少钱,上海电商摄影一#xff0c;类
定义类
部分与ES6用法基本一致。通过class定义类名#xff0c;并通过constructor定义构造函数#xff0c;通过super关键字来调用父类的方法。
class Person {name: string; // 属性constructor(name: string) { // 构造函数this.name name;}eat()…一类
定义类
部分与ES6用法基本一致。通过class定义类名并通过constructor定义构造函数通过super关键字来调用父类的方法。
class Person {name: string; // 属性constructor(name: string) { // 构造函数this.name name;}eat() {console.log(person eat);}
} 继承类
在定义子类的时候通过extends关键字继承。
class Man extends Person { // 继承父类eat() {super.eat(); // 调用父类的eat方法console.log(man eat);}
} 泛型类
类的定义、类的属性、方法定义同样可以使用泛型。
class PeopleT { // 泛型约束类private item: T; // 泛型约束属性constructor(item: T) { // 泛型约束构造函数参数this.item item;}get(): T { // 泛型约束方法返回值return this.item;}
} 访问修饰符
ts提供了三种访问修饰符来属性和方法的访问权限
public默认- 公共的可以在任何地方访问private - 私有的只能在当前类访问protected - 受保护的可以在当前类和子类访问 readonly修饰符
只读修饰符如果与访问修饰符同时存在放在访问修饰符的后面
name: string;
private readonly age: number; // age属性只读 二抽象类
理解
抽象类是不能被实例化的一个类他可以定义普通方法和抽象方法主要用来作为其他类的基类。
他定义的抽象方法只能通过继承来实现。 使用abstract修饰符 示例
abstract class Person { // 定义抽象类public name: string;public constructor (name: string) {this.name name;}abstract eat (): any; // 定义抽象方法
}// 定义子类
class Man extends Person {public age: numberconstructor (name: string, age: number) {super(name) // 调用父类的构造函数this.age age;}eat () { // 定义子类实现的方法console.log(eat sth);}
}// 实例化子类
var man new Man(张三, 18);三接口
理解
子类继承父类后可以访问父类的非私有属性和方法然而如果子类还有其他方法和其他类的方法用法一致那便只能重新编写一次代码因为一个类只能继承一个父类。因此接口就用来解决这个问题一个类可以同时实现多个接口。 特点
接口可以继承接口接口可以继承类类可以实现多个接口也可以使用泛型约束接口 使用
使用interface关键字定义接口类使用implements关键字实现接口 示例
// 定义接口1
interface Util {type: string; // 接口属性// 接口方法add(): number;minus(): number;
}// 定义接口2
interface Food {eat(): void;
}// 定义类并实现接口
class Man implements Util, Food {constructor (type: string) {this.type type;}add() {return 1 1;}minus() {return 2 - 1;}eat() {console.log(eat ing);}
}// 定义接口3继承接口1
interface StringUtil extends Util {toString(): string;
}