首页 > 其他分享 >5、类

5、类

时间:2023-12-04 20:02:55浏览次数:23  
标签: name 修饰符 number readonly 抽象类 public

typescript中的类扩展了ES6中的类,在其基础上扩展了以下语法:

  • 访问修饰符
  • 静态属性
  • 抽象类

访问修饰符

typescript提供了下列修饰符:

  • public:公共的(类中的成员默认为public
  • private:私有的(不能在声明它的类的外部访问)
  • protected:受保护的(protected修饰符与private修饰符的行为很相似,但有一点不同,protected成员在派生类中仍然可以访问)
class Animal {
    public name: string;
    private age: number;
    public constructor(theName: string,age:number) { 
        this.name = theName; 
        this.age = age;
    }
    public move(distanceInMeters: number) {
        console.log(`${this.name} moved ${distanceInMeters}m.`);
    }
}
new Animal("Cat",12).age; // 错误: 'age' 是私有的.

readonly修饰符

使用readonly关键字可以将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化

class Octopus {
    readonly name: string;
    readonly numberOfLegs: number = 8;
    constructor (theName: string) {
        this.name = theName;
    }
}
let dad = new Octopus("Man with the 8 strong legs");
dad.name = "Man with the 3-piece suit"; // 错误! name 是只读的.

readonly修饰符也可以用在参数上

class Octopus {
    readonly numberOfLegs: number = 8;
    constructor(readonly name: string) {
    }
}

publicprivateprotected同样可以用在参数上

readonly VS const
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用
const,若做为属性则使用readonly

静态属性

typescript中通过使用static来定义静态属性:

class bike{
	static origin:number = 12;
    constructor (public scale: number) { }
    static getName(){}
}

抽象类

抽象类做为其它派生类的基类使用。 它们一般不会直接被实例化。 不同于接口,抽象类可以包含成员的实现细节。
abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法。

abstract class Animal {
    abstract makeSound(): void;
    move(): void {
        console.log('roaming the earch...');
    }
}

抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。 抽象方法的语法与接口方法相似。 两者都是定义方法签名但不包含方法体。 然而,抽象方法必须包含abstract关键字并且可以包含访问修饰符。

标签:,name,修饰符,number,readonly,抽象类,public
From: https://www.cnblogs.com/ewar-k/p/17875767.html

相关文章