TypeScript 中的访问限制:使用 private 和 protected

阅读时长 5 分钟读完

TypeScript 中的访问限制:使用 private 和 protected

在 TypeScript 中,我们可以使用 private 和 protected 两种访问修饰符来限制类的属性和方法的访问范围,这是面向对象编程的重要概念之一。本文将详细介绍 private 和 protected 的用法和区别,并提供一些示例代码和最佳实践。

  1. private 访问修饰符

在 TypeScript 中,private 访问修饰符用于限制类的属性和方法只能在类内部被访问,包括在同一个类的其他方法中。外部无法访问类的私有成员。其语法格式如下:

示例代码:

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

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

在上面的示例代码中,我们创建了一个 Person 类,它有一个私有属性 name 和一个公共方法 sayHello()。在 Person 类的构造函数中,我们将传入的参数 name 赋值给私有属性 name。在公共方法 sayHello() 中,我们使用 this.name 来访问私有属性 name。在外部,我们可以通过创建 Person 实例 john 来调用公共方法 sayHello(),但是我们无法直接访问私有属性 name。

注意,如果我们没有在构造函数中为私有属性赋值,它的默认值为 undefined。

  1. protected 访问修饰符

在 TypeScript 中,protected 访问修饰符用于限制类的属性和方法可以被类的子类访问,但是不能被外部访问。其语法格式如下:

示例代码:

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

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

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

在上面的示例代码中,我们创建了一个 Animal 类,它有一个受保护的属性 name。在 Animal 类的构造函数中,我们将传入的参数 name 赋值给受保护的属性 name。我们还创建了一个子类 Dog,它继承了 Animal 类的属性和方法。在公共方法 bark() 中,我们使用 this.name 来访问受保护的属性 name。在外部,我们可以通过创建 Dog 实例 lucky 来调用公共方法 bark(),但是我们无法直接访问受保护的属性 name。

注意,受保护的属性和方法也可以在子类中被访问和继承。

  1. 最佳实践

在使用 private 和 protected 访问修饰符时,我们需要考虑以下几点最佳实践:

  • 只有在必要时才使用 private 和 protected 访问修饰符,因为它们会增加代码的复杂性和维护难度。
  • 在 TypeScript 中,private 和 protected 访问修饰符只在编译时起作用,在运行时不会生效。因此,我们需要在编写 TypeScript 代码时保证数据的安全性。
  • 在继承和实现接口时,我们需要了解 private 和 protected 访问修饰符的约束。子类和实现类无法访问父类或接口的私有成员,但是可以访问受保护的成员。
  1. 总结

对于 TypeScript 中的访问限制,我们需要了解 private 和 protected 两种访问修饰符的用法和区别,以及它们的最佳实践。在编写面向对象的 TypeScript 代码时,我们应该合理使用访问修饰符以确保数据的安全性和可维护性。

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

纠错
反馈