TS类的访问类型 public private protected 的区别和使用体验

private protected public 访问类型

  • public 允许我在类的内外被调用
  • private 允许在类内被调用
  • protected 允许在类内及继承的子类中使用
    如果不写的话 ,默认是public

写个demo来体验一下,更容易理解

// private protected public 访问类型
// public  允许在类的内外被调用
// private 允许在类内被调用
// protected  允许在类内及继承的子类中使用 
class Person22 {
  protected name: string;
  public sayHi() {
    // 在类内调用name
    this.name
    console.log('hi')
  }
  // sayHellow现在是 只允许在类内被调用 私有
  private sayHellow() {
    this.sayHi()
  }

}

class Teacher13 extends Person22 {
  public sayBye() {
    // 在继承的子类中使用name
    this.name
  }
  public set() {
    // 因为 sayHellow前的访问类型是 private 私有的  所以这里无法调用
    this.sayHellow()
  }
}

const person22 = new Person22()
// 在类外 调用name  因为name访问类型为protected 允许在类内和继承的子类调用,所以在类外无法调用
person22.name = 'laofan'
console.log(person22)
// sayHi()访问类型是public  类内外均可调用 所以不报错
person22.sayHi()
// sayHellow访问类型是private  私有  类外不可调用
person22.sayHellow()

const teachet13 = new Teacher13()
// set 访问类型为 public 所以可在外部调用
teachet13.set()

三者主要的区别其实就是控制了类内部的属性和方法可被调用的范围,自己尝试动手写一下即可体验到不同

### TypeScript JavaScript 的主要区别 #### 类型系统 TypeScript 是一种静态类型的编程语言,而 JavaScript 则是动态类型的语言。这意味着,在编写 TypeScript 代码时可以定义变量、函数参数以及返回值的具体数据类型。 ```typescript // 定义带有类型的变量 let age: number = 25; function greet(name: string): void { console.log(`Hello ${name}`); } ``` 相比之下,JavaScript 不支持这种显式的类型声明[^1]: ```javascript let age = 25; // 变量没有指定类型 function greet(name) { // 函数参数也没有类型标注 console.log('Hello ' + name); } ``` #### 接口与的支持 TypeScript 提供了面向对象特性如接口(interface),允许开发者更精确地描述对象结构;同时也增强了对(class)特性的支持,包括访问修饰符(public/private/protected)。 ```typescript interface Person { firstName: string; lastName?: string; // 可选属性 } class Employee implements Person { public firstName: string; constructor(firstName: string) { this.firstName = firstName; } } ``` 而在纯 JavaScript 中实现似的逻辑则较为复杂且不够直观: ```javascript const personShape = { firstName: '', }; class Employee { constructor(firstName) { Object.assign(this, personShape); // 手动复制形状 this.firstName = firstName; } } ``` #### 编译过程 编写的 TypeScript 文件(.ts)需要通过编译器转换成普通的 JavaScript (.js), 这样才能被浏览器或其他环境执行。此过程中会移除所有的类型信息并保留兼容 ES 版本的目标代码。 ```bash tsc app.ts --target es6 --outDir dist/ ``` 总结来说,虽然两者共享相同的运行时行为,但是由于增加了额外的功能——特别是强大的类型检查机制——使得开发大型应用变得更加容易维护扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值