// ES5 function Person(name:string, age: 18) { this.name = name; this.age = age; } Person.attr="move" // ES6 class Person { static attr = 'move'; constructor(public name: string, public age: number) {} } const person = new Person('tz', 18);
如下,当想获取或者修改私有属性_name时,不可以在类外修改,可以通过getter获取,通过setter修改
class Person { constructor(private _name: string) {} get name() { return this._name; } set name(val: string) { this._name = val; } } const person = new Person('tz'); console.log(person.name); // tz person.name = 'tom'; console.log(person.name); // tom
单例
class Person { private static instance: Person; private constructor() {} static getInstance() { if (!this.instance) { this.instance = new Person(); } return this.instance; } } const person = Person.getInstance();
readonly只能读不能改
class Person { public readonly name: string; constructor(name: string) { this.name = name } } const person = new Person('tz'); person.name = 'tom'; // 报错: name属性只读不能改 console.log(person.name); // tz
abstract class Geom { constructor(public width: string){} getType() { return "Geom"; } abstract getArea(): number; } class Circle extends Geom{ getArea(): number { return 123; } } class Square{ getArea(): number { return 456; } }