typescript 公共,私有与受保护的修饰符

前端之家收集整理的这篇文章主要介绍了typescript 公共,私有与受保护的修饰符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

public理解

当你在程序中没有指明修饰符时,默认为public,也就是在类内类外都可以访问,我们以下面的例子来解释。

  1. class Person{
  2. name:string
  3. sex:string
  4. age:number // 默认设置为public
  5. constructor(name:string,sex:string,age:number){
  6. this.name = name
  7. this.sex = sex
  8. this.age = age
  9. }
  10. show_name():void{
  11. console.log('类内函数输出的:',this.name)
  12. }
  13. }
  14. let lcs = new Person('lcs','man',21)
  15. console.log('类外输出的:',lcs.name)
  16. lcs.show_name()

image-20190705141015777

private理解

在类内定义这个变量时,我们可以定义为private,他就不可以在类外进行访问,例子如下:

  1. class Person{
  2. private name:string // 这里将name改为了private
  3. sex:string
  4. age:number
  5. constructor(name:string,this.name)
  6. }
  7. }
  8. class Teacher extends Person{
  9. salary: number
  10. constructor(name:string,age:number,salary:number){
  11. super(name,sex,age)
  12. this.salary = salary
  13. }
  14. show():void{
  15. console.log('继承类内输出的:',this.name,this.salary.toString())
  16. }
  17. }
  18. let lcs = new Person('lcs',21)
  19. let t = new Teacher('lcs',21,31232)
  20. t.show()
  21. console.log('类外输出的:',lcs.name)
  22. lcs.show_name()

在编译的时候编译器报错

image-20190705142913114

编译器指出,name变量时private,只能在类Person内使用,在继承类类外都是可以访问的,但是这个时候在浏览器内还是可以正常运行的,报错的目的是为了让你规范代码

image-20190705142927316

protected理解

定义为protected之后的变量只能在类内和继承类内进行访问,在类外访问就会报错

  1. class Person{
  2. protected name:string // 将name改为protected
  3. sex:string
  4. age:number
  5. constructor(name:string,lcs.name)
  6. lcs.show_name()

编译器报错如下

image-20190705143216822

同样,在浏览器还是可以正常运行的

image-20190705142927316

猜你在找的TypeScript相关文章