解析 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