TypeScript 中的类 (Class) 详解

在 TypeScript 中,类 (Class) 是一种重要的概念。类是一组具有相同属性和方法的对象的抽象模板。本文将详细介绍 TypeScript 中的类,包括类的定义、构造函数、继承、访问修饰符、静态属性和方法等。

类的定义

定义一个类的语法如下:

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

其中,ClassName 表示类的名称,其后是类的属性和方法。类的属性和方法可以是公共的(公共的属性和方法可以被类的实例和子类访问)、私有的(私有的属性和方法只能被类的实例访问)或受保护的(受保护的属性和方法只能被类的实例和子类访问)。

下面是一个示例:

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

在这个示例中,我们定义了一个名为 Person 的类,并声明了两个公共的属性 nameage,以及一个公共的方法 sayHello。这个类的作用是输出一个人的姓名和年龄。

构造函数

类的构造函数被用来初始化类的实例,并可以在创建对象时接受参数。构造函数的语法如下:

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

下面是一个示例:

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

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

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

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

在这个示例中,我们在 Person 类中添加了一个构造函数,这个构造函数接收一个 name 和一个 age 参数,然后将这些参数分别赋值给类的属性 nameage。在创建一个 Person 类的实例时,我们传入相应的参数。注意,我们不需要显式地指定构造函数的返回值,构造函数的返回值是隐式地设置为创建的新实例。

继承

继承是指一个类通过扩展另一个类来获得继承类的所有属性和方法。在 TypeScript 中,继承使用关键字 extends,其语法如下:

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

下面是一个示例:

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

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

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

在这个示例中,我们定义了一个名为 Animal 的基类,它有一个属性 name 和一个方法 sayHello。然后我们定义了一个名为 Cat 的子类,它继承了 Animal 类,并重写了 sayHello 方法。

访问修饰符

访问修饰符用于限制类的属性和方法的访问权限。在 TypeScript 中,有三种访问修饰符:public、private 和 protected。

  • public:公共的,可以被类的实例和子类访问,默认的访问修饰符就是 public。
  • private:私有的,只能被类的实例访问。
  • protected:受保护的,只能被类的实例和子类访问。

访问修饰符的语法是放在属性或方法的前面,如下面的示例:

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

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

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

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

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

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

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

在这个示例中,我们定义了一个名为 Person 的类,并定义了 nameageaddress 三个属性以及一个 sayHello 方法。其中,name 属性是公共的,而 ageaddress 两个属性是私有的和受保护的。

然后我们定义了一个名为 Student 的类,它继承自 Person 类,并通过调用 super 函数来调用父类的构造函数。我们还定义了一个名为 printAddress 的方法,它可以访问父类的受保护属性 address。最后,我们分别创建了一个 Person 类的实例和一个 Student 类的实例,并分别尝试访问属性和调用方法。

静态属性和方法

静态属性和方法是属于类本身而不是它的实例的属性和方法,它们可以像普通属性和方法一样访问,而不需要创建类的实例。在 TypeScript 中,可以使用 static 关键字来定义一个静态属性或方法。

静态属性和方法的语法如下:

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

下面是一个示例:

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

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

在这个示例中,我们定义了一个名为 MathUtils 的类,并定义了包含静态属性 PI 和静态方法 add 两个成员。然后我们直接调用 MathUtils.PIMathUtils.add,而不需要创建 MathUtils 类的实例。

总结

本文介绍了 TypeScript 中的类,包括类的定义、构造函数、继承、访问修饰符和静态属性和方法等。学习和掌握 TypeScript 中的类是成为一名优秀的前端工程师的必备技能之一,希望本文对你有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6649b36ad3423812e489cbba