首页 > 其他分享 >typescript 中的private是什么,你记住了吗?

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

时间:2024-09-14 15:55:10浏览次数:11  
标签:typescript name 私有 private 访问 TypeScript 记住 属性


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

私有属性

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

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.

私有方法

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

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的类型检查,仍然可能访问到这些所谓的“私有”成员。


标签:typescript,name,私有,private,访问,TypeScript,记住,属性
From: https://blog.51cto.com/u_12344418/12017510

相关文章

  • 【花雕学编程】Arduino动手做(230)---ESP32 CAM 长时延时摄影:在拍摄之间使设备休眠并记
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • TypeScript:函数
    一、简介函数是JavaScript应用程序的基础。它帮助你实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用。和JavaScript一样,TypeScr......
  • 【TS】TypeScript配置详解【三】
    简介TypeScript代码最终都会被编译成JavaScript代码来运行。这个编译的过程需要使用TypeScript编译器,我们可以为该编译器配置一些编译选项。在TypeScript项目的根目录下执行“tsc-init”命令,快速创建一个tsconfig.json文件。该文件用于配置TypeScript编译项目时编......
  • 【TS】TypeScript高级详解【二】
    TypeScript类的使用进行ES5开发的时候,需要使用函数和原型链实现类和继承。ES6引入了class关键字,我们可以更加方便地定义和使用类。作为JavaScript的超集,TypeScript同样支持使用class关键字,并且可以对类的属性和方法等进行静态类型检测。类的定义具体的类定义方式如下:......
  • 【TS】TypeScript基础详解【一】
    Javascript类型缺陷类型引发的问题在编程开发中,有一个共识:错误越早发现,就越容易解决。例如:能在代码编写时发现错误,就不要等到代码编译时才发现(这也是IDE的优势之一)。能在代码编译时发现错误,就不要在代码运行时才发现(类型检测可以帮助我们在这方面做得很好)。能在开发......
  • Azure web app has no access to openai private endpoint in virtual network
    题意:"AzureWeb应用无法访问虚拟网络中的OpenAI私有端点。"问题背景:IamtryingtohostawebapplicationsimilartoaprivateChatGPTinstancewithinasecludedvirtualnetwork,ensuringthatthere'snoexternalinternetaccess."我正在尝试在一个隔离的......
  • Vue 生命周期与 TypeScript:深入理解组件生命周期
    Vue生命周期与TypeScript:深入理解组件生命周期引言Vue.js作为一种流行的前端框架,其组件生命周期是开发过程中不可或缺的一部分。理解并正确利用Vue的生命周期,可以帮助开发者构建更加健壮和可维护的应用。而当TypeScript与Vue结合使用时,这种优势得到了进一步的增强。Typ......
  • Vue 表单输入绑定与 TypeScript:提升前端表单输入的可靠性
    ......
  • Vue 方法与事件处理与 TypeScript:增强前端应用的交互性
    ......
  • [Typescript] Toggle full screen
    constrequestFullscreenProps=["requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullScreen",]asconst;constexitFullScreenProps=["exitFullscreen","......