TS中类相关基础知识(个人学习)

144 阅读2分钟

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类的相关知识点总结,如果有错误的地方欢迎指正,谢谢!