TS中的类

120 阅读1分钟

TS中的类

面向对象思想

  • 使用属性列表描述类中的属性
   class User {
        name: string
        age: number

        constructor(name: string, age: number){
            this.name = name;
            this.age = age;
        }
    }

如果不写构造函数或者构造函数中没有写全初始化属性,则nameage类型为undefined

  • 属性的初始化检查

可以使用"strictPropertyInitialization": true配置,严格检查属性的初始化。

初始化检查位置:构造函数中、属性默认值

属性默认值的方式有两种:

    //第一种
    class User {
        name: string = 'kevin'
        age: number = 109
    }
    
    //第二种
    constructor(name: string = 'kevin', age: number = 109){
        this.name = name;
        this.age = age;
    }

  • 属性可以是可选的

    适用于可以为空的数据

   class User {
       name: string = 'kevin'
       age: number = 109
       pid?: string
   }
   
  • 属性可以修饰为只读的
   class User {
        readonly id: number
        name: string
        age: number
        pid?: string

        constructor(name: string, age: number){
            this.id = Math.random();
            this.name = name;
            this.age = age; 
        }
    }
  • 属性可以使用访问修饰符

    • public:默认的访问修饰符,公开的,所有代码均可访问
    • private:私有的
    • protect
  • 属性简写

    如果某个属性通过构造函数传递,不经过处理直接赋值。则可以写为

    class User {
        constructor(public name: string, public age: number){
            this.id = Math.random();
        }
    }

访问器

用于控制属性的读取

   class User {
        constructor(public name: string,private _age: number){
            this.id = Math.random();
        }
        get age(){
            return this._age;
        }
        
        set age(value: number){
            if(value < 0){
                this._age = 0;
            } else if(age > 00){
                this._age = 100;
            }else {
                this._age = value;
            }
            return this._age;
        }
    }