TypeScript学习之——class(个人笔记)

基本用法


class Person {
    name: string // 2. 需要先在类里面声明成员,再通过this访问
    age: number = 18 // 3. 如果没有在构造函数中赋值,需要赋一个初始值
    constructor(name: string, age: number) {
        this.name = name // 1. 直接通过this访问/添加name成员会报:类型“Person”上不存在成员“name”。
    }
}
const person = new Person('jack', 18)
console.log(person.name, person.age);

访问修饰符


用于确定成员的可访问范围。
public:公共成员(默认)。
private:私有成员-类内部才能访问,不能通过实例访问。
protected:受保护的成员-只能在类内部和子类中才能访问。

class Person {
    name: string // 不加的情况下默认是public
    age: number

    public gender: string = '男'
    private address: string = '广州'
    protected height: number = 180
    constructor(name: string, age: number) {
        this.name = name
        console.log('子类super调用', this.name); // tom
    }
}
const person = new Person('jack', 18)
console.log(person.name, person.age);
// console.log(person.address); // 私有成员不能在Person外部访问
// console.log(person.height); // 受保护的成员只能在Person类内部和子类中才能访问

class Man extends Person {
    constructor(name: string, age: number) {
        super(name, age) // 通过super调用父类中的构造函数
        console.log(this.height); // 受保护的成员可以在子类中访问
    }
}
const man = new Man('tom', 20)

只读成员


class Person {
    name: string
    age: number = 18
    public gender: string = '男'
    private address: string = '广州'
    protected height: number = 180
    // 类的只读成员:加readonly(如果有修饰符需要写在修饰符后面)
    protected readonly hobby: string = '乒乓球'
    constructor(name: string, age: number) {
        this.name = name
        console.log('子类super调用', this.name); // tom
    }
}
const person = new Person('jack', 18)
console.log(person.name, person.age);
// console.log(person.address); // 私有成员不能在Person外部访问
// console.log(person.height); // 受保护的成员只能在Person类内部和子类中才能访问
// person.hobby = 'love' // 只读成员不能被修改

class Man extends Person {
    constructor(name: string, age: number) {
        super(name, age) // 通过super调用父类中的构造函数
        console.log(this.height); // 受保护的成员可以在子类中访问
    }
}
const man = new Man('tom', 20)

你可能感兴趣的:(TypeScript学习之——class(个人笔记))