ts写class需要使用es6实例属性新写法

155 阅读1分钟

es6实例属性新写法: 实例属性除了定义在constructor()方法里面的this上面,也可以定义在类的最顶层,与方法处于同一层级,前面不需要加this。新写法的好处是,所有实例对象自身的属性都定义在类的头部,看上去比较整齐,一眼就能看出这个类有哪些实例属性,且ts类型检查不会报错

// 旧写法
class Observer {
    constructor(id: string) {
        this.id = id
    }

    update(sub) {
        console.log(`被观察者 ${sub.id}变化了`);
    }
}

// 新写法
class Observer {
    id: string
    constructor(id: string) {
        this.id = id
    }

    update(sub) {
        console.log(`被观察者 ${sub.id}变化了`);
    }
}