TypeScript 中 class 的一些用法

阅读时长 6 分钟读完

TypeScript 是一种由微软开发的 JavaScript 超集,它给 JavaScript 带来了类型检查和更好的面向对象编程能力。在 TypeScript 中,class 是一种重要的语言特性,它能让我们更方便地使用面向对象的编程方式。本文将介绍 TypeScript 中 class 的一些用法,包括类的定义、继承、修饰符、抽象类和接口等。

类的定义

在 TypeScript 中,我们可以使用 class 关键字来定义一个类。类的定义包括类名、类的属性和方法。

-- -------------------- ---- -------
----- ------ -
  ----- -------
  ----------------- ------- -
    --------- - -----
  -
  ---------- -
    ------------------- --- ----------------
  -
-

上面的代码定义了一个 Animal 类,它有一个 name 属性和一个 sayHello 方法。在构造函数中,我们通过 this 关键字来初始化 name 属性。在 sayHello 方法中,我们使用模板字符串来输出一句问候语。注意,类的方法可以直接访问类的属性。

继承

在 TypeScript 中,我们可以使用 extends 关键字来实现类的继承。子类继承了父类的属性和方法,并可以在此基础上添加自己的属性和方法。

上面的代码定义了一个 Cat 类,它继承了 Animal 类。在 Cat 类的构造函数中,我们调用了父类的构造函数,并传入了 name 参数。在 meow 方法中,我们输出了一句猫叫声。注意,子类的构造函数必须调用父类的构造函数,否则会出现编译错误。

修饰符

在 TypeScript 中,我们可以使用修饰符来控制类的属性和方法的访问权限。常用的修饰符包括 public、private 和 protected。

  • public:默认修饰符,表示属性和方法可以在类的内部和外部访问。
  • private:表示属性和方法只能在类的内部访问。
  • protected:表示属性和方法可以在类的内部和子类中访问。
-- -------------------- ---- -------
----- ------ -
  ------ ----- -------
  ------- ---- -------
  --------- ------- -------
  ----------------- ------- ---- ------- ------- ------- -
    --------- - -----
    -------- - ----
    ----------- - -------
  -
  ---------- -
    ------------------- --- ----------------
  -
  ------- -------- -
    ---------------- ----------- ----- -------
  -
  --------- ----------- -
    --------------- ------ -- ------------------
  -
-

----- ------- ------- ------ -
  ----------------- ------- ---- ------- ------- ------- -
    ----------- ---- --------
  -
  ----------- -
    --------------- ---- -- ----------------
    --------------
    -----------------
  -
-

上面的代码定义了一个 Person 类和一个 Student 类,其中 Person 类有一个 public 的 name 属性、一个 private 的 age 属性和一个 protected 的 gender 属性。Person 类有一个 public 的 sayHello 方法、一个 private 的 sayAge 方法和一个 protected 的 sayGender 方法。Student 类继承了 Person 类,并在此基础上添加了一个 introduce 方法,该方法可以访问父类的 protected 属性和方法。

抽象类

在 TypeScript 中,我们可以使用 abstract 关键字定义抽象类。抽象类不能被实例化,只能被继承。抽象类可以包含抽象方法,抽象方法没有实现,必须在子类中被实现。

-- -------------------- ---- -------
-------- ----- ----- -
  -------- ---------- -------
-

----- ------ ------- ----- -
  ------- -------
  ------------------- ------- -
    --------
    ----------- - -------
  -
  --------- -
    ------ ------- - ----------- - ------------
  -
-

----- --------- ------- ----- -
  ------ -------
  ------- -------
  ------------------ ------- ------- ------- -
    --------
    ---------- - ------
    ----------- - -------
  -
  --------- -
    ------ ---------- - ------------
  -
-

上面的代码定义了一个 Shape 抽象类和两个实现类 Circle 和 Rectangle。Shape 类有一个抽象方法 getArea,该方法没有实现。Circle 类和 Rectangle 类继承了 Shape 类,并实现了 getArea 方法。

接口

在 TypeScript 中,我们可以使用接口来描述对象的形状。接口可以包含属性、方法、索引签名和函数签名等成员。

-- -------------------- ---- -------
--------- ------ -
  ----- -------
  ---- -------
  ----------- -----
-

----- ------- ---------- ------ -
  ----- -------
  ---- -------
  ----------------- ------- ---- ------- -
    --------- - -----
    -------- - ----
  -
  ---------- -
    ------------------- --- ----------------
  -
-

上面的代码定义了一个 Person 接口和一个实现类 Student。Person 接口包含 name 属性、age 属性和 sayHello 方法。Student 类实现了 Person 接口,并提供了 name 属性、age 属性和 sayHello 方法的实现。

总结

本文介绍了 TypeScript 中 class 的一些用法,包括类的定义、继承、修饰符、抽象类和接口等。通过学习这些内容,我们可以更好地使用 TypeScript 进行面向对象编程。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658eb191eb4cecbf2d48a9ea

纠错
反馈