为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第52天 TypeScript(8)

标签:
Typescript

类的静态属性

  • 类的静态属性就是直接挂载到类上的属性,而不是实例或者原型上的属性
  • 在ES6中使用static表示静态属性或者方法
// 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);

类的getter和setter

如下,当想获取或者修改私有属性_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

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来表示
  • 抽象类不可以实例化,只能被继承
  • 抽象类中也可以有具体属性或者方法的实现
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;
  }
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消