typescript 中的private是什么,你记住了吗?

在TypeScript中,private关键字用于声明类的成员(属性或方法)为私有的。这意味着这些成员只能在类的内部被访问和修改,而不能在类的外部通过类的实例直接访问。这是面向对象编程(OOP)中封装原则的一个体现,有助于隐藏类的内部实现细节,只暴露必要的接口给外部使用。

私有属性

私有属性是类的内部状态,只有类的内部方法或构造函数可以访问和修改这些属性。

typescript 复制代码
class Person {
  private name: string;

  constructor(name: string) {
    this.name = name; // 可以在构造函数中访问和修改私有属性
  }

  greet() {
    console.log(`Hello, my name is ${this.name}.`); // 可以在类的方法中访问私有属性
  }
}

const person = new Person("Alice");
// person.name; // 错误:'name' 是私有的,只能在类 'Person' 内部访问。
person.greet(); // 正确:输出 Hello, my name is Alice.

私有方法

私有方法与私有属性类似,也只能在类的内部被调用。这有助于封装特定的逻辑,避免外部直接调用这些内部逻辑。

typescript 复制代码
class Counter {
  private count: number = 0;

  private increment() {
    this.count++;
  }

  public getCount() {
    return this.count;
  }

  public incrementPublic() {
    this.increment(); // 可以在类的其他方法中调用私有方法
  }
}

const counter = new Counter();
// counter.increment(); // 错误:'increment' 是私有的,只能在类 'Counter' 内部访问。
counter.incrementPublic(); // 正确:通过公有方法间接调用私有方法
console.log(counter.getCount()); // 输出 1

注意事项

  • 私有成员(属性和方法)在类的子类中也是不可见的,这意呀着子类不能访问或覆盖父类的私有成员。
  • 私有成员主要用于封装类的内部实现细节,保护数据不被外部随意修改,保证类的封装性和安全性。
  • TypeScript的private关键字在编译成JavaScript时,并不会真正地将成员变为私有。JavaScript没有原生支持私有成员的概念,TypeScript通过TypeScript编译器来检查private成员的访问是否合法,而生成的JavaScript代码中并不包含private关键字。因此,如果你直接在JavaScript中或通过某些方式绕过TypeScript的类型检查,仍然可能访问到这些所谓的"私有"成员。
相关推荐
胡西风_foxww2 分钟前
【ES6复习笔记】数值扩展(16)
前端·笔记·es6·扩展·数值
mosen8684 分钟前
uniapp中uni.scss如何引入页面内或生效
前端·uni-app·scss
白云~️4 分钟前
uniappX 移动端单行/多行文字隐藏显示省略号
开发语言·前端·javascript
沙尘暴炒饭6 分钟前
uniapp 前端解决精度丢失的问题 (后端返回分布式id)
前端·uni-app
昙鱼20 分钟前
springboot创建web项目
java·前端·spring boot·后端·spring·maven
天天进步201526 分钟前
Vue项目重构实践:如何构建可维护的企业级应用
前端·vue.js·重构
小华同学ai29 分钟前
vue-office:Star 4.2k,款支持多种Office文件预览的Vue组件库,一站式Office文件预览方案,真心不错
前端·javascript·vue.js·开源·github·office
APP 肖提莫30 分钟前
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
java·前端·算法
问道飞鱼42 分钟前
【前端知识】强大的js动画组件anime.js
开发语言·前端·javascript·anime.js
k093343 分钟前
vue中proxy代理配置(测试一)
前端·javascript·vue.js