解析 TypeScript 中 encapsulation(封装)的实现方式

解析 TypeScript 中 encapsulation(封装)的实现方式

在 TypeScript 中,封装(encapsulation)是一种重要的面向对象编程的特性。它可以将数据和方法封装在一个类中,只对外部暴露必要的接口,保证数据的安全性和可维护性。本文将介绍 TypeScript 中实现封装的几种方式,并给出相应的示例代码。

1. public、private 和 protected 关键字

在 TypeScript 中,可以使用 public、private 和 protected 关键字来控制类的成员的访问权限。它们的作用如下:

  • public:表示成员可以被任意访问,默认情况下,类的成员都是 public 的;
  • private:表示成员只能在类内部访问,外部不能访问;
  • protected:表示成员可以在类内部和子类中访问,外部不能访问。

下面是一个示例代码:

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

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

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

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

2. 访问器(getter 和 setter)

访问器(getter 和 setter)是一种更加灵活的封装方式,可以控制类的成员的读取和修改权限。在 TypeScript 中,可以使用 get 和 set 关键字来定义访问器。它们的作用如下:

  • get:用于读取成员的值;
  • set:用于修改成员的值。

下面是一个示例代码:

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

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

3. readonly 关键字

readonly 关键字用于将成员设置为只读,即不能修改其值。它可以用于类的属性和参数。下面是一个示例代码:

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

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

4. namespace 和 module

namespace 和 module 是 TypeScript 中实现封装的另外两种方式。它们可以将代码封装在一个命名空间或模块中,避免命名冲突和全局污染。下面是一个示例代码:

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

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

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

总结

本文介绍了 TypeScript 中实现封装的几种方式,包括 public、private 和 protected 关键字、访问器(getter 和 setter)、readonly 关键字、namespace 和 module。掌握这些技巧,可以更好地实现面向对象编程的封装特性,提高代码的安全性和可维护性。

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