类中成员的修饰符,用来描述类中成员(属性、构造函数、方法)的可访问性。
1、public修饰符
当我们写一个类时,如果没有添加修饰符,那么类中成员就会有默认的修饰符public,表示公共的,在任何位置都可以访问该成员,在外部如a.name,在子类的内部(通过this.name)
class Person{
public name:string;
public age:number;
public constructor(name:string,age:number){
this.name=name;
this.age=age;
}
public say(){
console.log(`my name is ${this.name}`)
}
}
var a=new Student('小明',23)
2、private修饰符
使用private修饰的成员
外部无法访问这个成员
子类中也无法访问这个成员
class Person{
private name:string;
age:number;
constructor(name:string,age:number){
this.name=name;
this.age=age;
}
say(){
console.log(`my name is ${this.name}`)
}
}
class Student extends Person{
constructor(name:string,age:number){
super(name,age)
}
say(){
super.say();
console.log('呵呵',this.name)//在子类中使用private的属性将报错
}
}
var a=new Student('小明',23)
console.log(a.name)//在外部使用private的属性将报错
3、protected修饰符
使用protected修饰的成员
在外部无法访问这个成员
但是在子类中可以访问这个成员
4、readonly修饰符
使用readonly修饰的成员
在外部不能修改
在类的普通方法中,也不能修改
只有在类的构造函数中才能进行修改赋值
5、构造函数中的参数属性
构造函数中的参数可以使用public、private、protected、readonly进行修饰,无论是哪个进行修饰,该类中都会自动添加这么一个属性成员。
与JS中书写类不一样,TS中书写类,在constructor构造函数中为属性赋值前,需要先在构造函数外定义属性
class Person {
name:string;
constructor(name:string){
this.name=name
}
}
如果,在构造函数中的参数中使用public修饰符修饰参数,那么类中都会自动添加这么一个属性成员,其余修饰符也是一样。
class Person {
constructor(public name:string='小明'){
}
}