搜索文档
类
定义类
tsclass Person { name: string = 'iGma'; age: number = 20; run(m: number) { console.log(`${this.name}跑步${m}米`); } } let per = new Person(); per.run(100);静态属性/方法:静态属性或方法不需要
new类的实例,直接用类名即可调用。tsclass Person { name: string = 'iGma'; static age: number = 20; static run(m: number) { console.log('静态方法 run'); } } console.log(Person.age); Person.run(100);只读属性:只能读不能改
tsclass Person { readonly name: string = 'iGma'; age: number = 20; } let per = new Person(); per.name = 'hahaha'; // 报错 per.age = 21; // 正常
构造函数
定义
tsclass Person { // 构造函数 constructor() { console.log(this) } }在创建类的实例对象时会执行该函数。此时的
this就表示当前对象。可以在这个函数中给属性赋值
tsclass Person { name: string age: number constructor(name: string, age: number) { this.name = name; this.age = age; } } let per = new Person('iGma', 20); console.log(per);
继承
定义
tsclass Person { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; } } // 教师 class Teacher extends Person {} let tea = new Teacher(230713, 'iGma'); console.log(tea);方法的重写
tsclass Person { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; }; run() { console.log(`跑步`); } } // 教师 class Teacher extends Person { run() { console.log(`${this.name}在跑步`); } } let tea = new Teacher(230713, 'iGma'); tea.run(); console.log(tea);super:子类中使用 super 既是使用父类中的属性或方法。当 super 是一个方法时表示调用父类的构造方法。
tsclass Person { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; }; run() { console.log(`跑步`); } } // 教师 class Teacher extends Person { subject: string; constructor(id: number, name: string, subject: string) { super(id, name); this.subject = subject; super.run(); } } let tea = new Teacher(230713, 'iGma', '计算机'); console.log(tea);
抽象类
抽象类不能用来创建对象,它是专门被其他类继承的。
代码
tsabstract class Person { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; }; } // 教师 class Teacher extends Person {} let tea = new Teacher(230713, 'iGma'); let per = new Person(230714, 'aaa'); // 报错抽象方法:定义在抽象类中,没有方法体,子类必须重写该方法。
tsabstract class Person { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; }; abstract run(): void; } // 教师 class Teacher extends Person { run(): void { console.log('跑步'); } } let tea = new Teacher(230713, 'iGma'); tea.run();
接口
作用:用来定义类的结构。规定类中应该包含哪些属性和方法。
接口可以重新声明。
接口中的属性和方法不能有实际值。
tsinterface user { name: string; age: number; run(): void; } class Us implements user { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; }; run() { console.log(123); } }
