ts中使用class

152 阅读1分钟

extends,constructor,super的含义

class Person {
    type:string='person';
    id:number=100;
    constructor(name:string,gender?:string,age?:number){
    }
}
//new Person就是调用Person中的constructor
const p1 = new Person('laoxie');
console.log('p1=',p1);//打印结果如下图一所示

class Student extends Person{
    constructor (name:string,gender:string,age?:number){
        //有extends一定要写super,super是调用父组件的constructor
        super(name,gender,age);
    }
}
const s1 = new Student( ' laoxie','男',18)

图一如下:

image.png

其下写法一跟写法二是一个效果

//写法一
class Person {
    id:number=100;
    constructor(name:string,gender?:string,age?:number){
    }
}
//写法二
class Person {
    id:number;
    constructor(name:string,gender?:string,age?:number){
        this.id=100
    }
}

添加静态属性

class Person {
    type:string='person';
    id:number=100;
    name:string;
    
    //受保护(只在当前类和子类中访问)
    protected gender: string;
    
    //私有属性(ES6不支持私有属性,只能在当前类中使用,不能在实例中使用也不能在子类中使用)
    private readonly age:number;
    
    //添加静态属性(ES6不支持静态属性,但支持静态方法)
    static typeof = 'Person'
    constructor(name:string,gender?:string,age?:number){
        this.name = name
    }
}

  • public
  • private 私有的--------声明它的类可访问
  • protected 受保护的----声明它的类、子类可访问
  • readonly 与其他修饰符一起使用时必须写在最后