美文网首页
TypeScript学习之——class(个人笔记)

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

作者: kevision | 来源:发表于2022-11-20 13:16 被阅读0次

    基本用法


    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(个人笔记)

          本文链接:https://www.haomeiwen.com/subject/djqmxdtx.html