TypeScript学习(三)类

文章介绍了TypeScript中的类定义,包括构造函数、属性和方法。还讨论了继承机制,访问修饰符(public,private,protected,readonly)的作用,以及封装概念下的getter和setter。此外,提到了静态属性的定义和使用,以及抽象类在创建基类和定义抽象方法时的角色。
摘要由CSDN通过智能技术生成

1.定义类

   使用class关键字。

class User {
  name: string;
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}

const user = new User("volit");

2.继承

   使用extends关键字,继承类。子类从父类继承了属性和方法。但是子类的构造方法在访问this之前,必须调用super()。

class User {
  name: string;
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}

class extraUser extends User {
  constructor(name) {
    super(name);
  }
}

const user = new extraUser("volit");
user.sayName(); // volit

3.访问修饰符

(1)publicc

   成员属性的默认修饰符是public。

(2)private

   标记为private时,成员不能被声明它的类外部访问。且对于TypeScript鸭子模型的机制,需要两个类声明为private属性,都来自同一个地方。

class User {
  private name: string;
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}

const user = new User("volit");
console.log(user.name); // 属性“那么”为私有属性,只能在类“User“中访问

(3)protected

   protected和private很相似,但有一点不同,protected修饰的成员变量可以被派生类访问。同时,protected可以修饰构造器,这意味着这个构造器不能再包含它的类外被实例化,但是可以被继承。

(4)readonly

   将成员变量声明为只读,声明为只读的成员变量必须在声明或构造函数里被初始化。

(5)参数属性

   在构造器参数前加上访问修饰符,会自动创建并初始化成员属性。

class User {
  constructor(public name: string) {}
  sayName() {
    console.log(this.name);
  }
}

const user = new User("volit");
user.sayName(); // volit

4.封装

   TypeScript支持通过getter/setter来截取对象成员的访问。

class User {
  constructor(private _name: string) {}
  get name() {
    return this._name;
  }

  set name(_name: string) {
    this._name = _name;
  }
}

ps.只带有get而没有get的属性会被默认视为readonly属性

5.静态属性

   使用static关键字定义静态属性,定义静态属性可以直接使用类名.属性名的方式,访问静态属性。

class User {
  static username;
  constructor(private _name: string) {}
  get name() {
    return this._name;
  }

  set name(_name: string) {
    this._name = _name;
  }
}

6.抽象类

   抽象类使用abstract关键字定义,通常作为派生类的基类使用,一般不会被实例化。不同于接口,抽象类可以包含成员的实现细节。同时,使用abstract关键字也可以定义抽象方法,抽象类中的抽象方法不包含具体实现,并且必须在派生类中实现。抽象方法必须被abstract修饰符修饰,且可以定义访问修饰符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

volit_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值