在 TypeScript 中,我们可以定义私有方法和私有属性,以实现封装和内部实现的隐藏。这样可以使代码变得更加模块化、可维护性更好,也可以防止一些意外的错误。
定义私有方法和私有属性
要定义私有方法和私有属性,需要在它们的名称前面加上下划线 _
和一个访问修饰符 private
,如下所示:
-- -------------------- ---- ------- ----- ------ - ------- ------ ------- ----------------- ------- - ---------- - ----- - ------- ----------- - ------------------- -- ---- -- ----------------- - -展开代码
在这个例子中,_name
和 _sayHello
都是私有的成员,只能在 Person
类内部访问。
访问私有方法和私有属性
在 TypeScript 中,私有方法和私有属性只能在定义它们的类中访问:
const person = new Person("Tom"); console.log(person._name); // 编译时报错,_name 为私有成员 person._sayHello(); // 编译时报错,_sayHello 为私有成员
在编译时会报错,因为 person
对象无法访问 Person
类的私有成员。
学习意义和指导意义
私有方法和私有属性可以增强 TypeScript 中的封装能力。它们隐藏了类的内部实现细节,减少了外部代码与内部实现的耦合度,使得代码具有更好的灵敏性和可维护性。
同时,私有成员也可以保护类内部,防止外部程序员通过直接访问私有成员来破坏类的整体结构和功能。当对类的内部实现进行调整时,私有成员可以减轻修改造成的影响和风险。
但需要注意的是,私有成员并不是解决所有问题的银弹,需要权衡其优缺点来使用。过多的私有成员可能会使代码变得难以理解和维护,建议在必要的情况下使用。
示例代码
下面是一个具有私有方法和私有属性的 Animal
类的示例代码:
-- -------------------- ---- ------- ----- ------ - ------- ------ ------- ------- ------ ------- ----------------- ------- ----- ------- - ---------- - ----- ---------- - ----- - ------- ---------- ------- - -------------------------- --------------- -- ------ ----------- - ------ --- ------ - ------ ----------- - ------ --- ------ - ------ ----------- - ------ ---------- ------- - ---------------- - - ----- --- - --- --------------- ------- ---------------------- -- -- ------- ---------------------- -- -- ----- ----------------- -- -- ------ ----- -- ------ ------展开代码
在 Animal
类中,_name
和 _kind
是私有属性,只能在类内部访问;_eat
是私有方法,也只能在类内部调用。外部程序员无法直接访问这些私有成员,但可以通过公共成员 name
和 kind
获取这些私有属性的值,通过公共方法 feed
来调用私有方法 _eat
。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b80c6a306f20b3a657e508