ES5中类的实现
function Person (name, age) {
this.name = name
this.age = age
this.getInfo = function () {
return this.name + '--' + this.age
}
}
TS中类的实现
// 定义类
class Person {
name: string // 属性
constructor (name: string) { // 构造函数 实例化类的时候触发的方法
this.name = name
}
run(): void {
alert(this.name)
}
}
// 继承Person类
class Web extends Person {
constructor (name: string) {
super(name)
}
}
类中的修饰符
TS中定义属性的时候,提供了三种修饰符:public、protected、private
public:公有类型,在类、子类、以及外部均可访问。
protected:保护类型,在类、子类中可以访问,在类外部无法访问。
private:私有类型,在类中可以访问,在子类、类外部均无法访问。
静态方法与静态方法
ES5中的静态方法
function Person () {}
Person.run = function () {}
TS中的静态方法
class Person {
public name: string
static age: number
constructor(name: string) {
this.name = name
}
// 实例方法
run () {
alert(`${this.name}`)
}
// 静态方法
// 无法直接调用类里面的属性
static printName () {
alert(`${this.age}`)
}
}
多态
父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现。多态属于继承.
class Animal {
name: string;
constructor (name: string) {
this.name = name
}
eat() {
console.log('吃的方法')
}
}
class Dog extends Animal {
constructor(name: string) {
super(name)
}
eat() {
return this.name + '吃肉'
}
}
class Cat extends Animal {
constructor(name: string) {
super(name)
}
eat() {
return this.name + '吃鱼'
}
}
抽象方法以及抽象类
用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。abstrcat抽象方法只能存在于抽象类里面。抽象类和抽象方法用于定义标准。
// 抽象类仅提供其它类继承的基类,不能直接实例化。
abstract class Animal {
name: string
constructor (name: string) {
this.name = name
}
abstract eat(): void;
}
class Dog extends Animal {
// 抽象类的子类必须实现抽象类里面的抽象方法
constructor(name: string) {
super(name)
}
eat() {
console.log(this.name + '吃肉')
}
}
结尾
以上为个人学习TS类的相关知识点总结,如果有错误的地方欢迎指正,谢谢!