1. 继承(extends,super)

  1. 在TypeScript中,允许使用面向对象模式。
  2. 基于类的程序设计中, 最基本的模式允许使用继承来扩展现有的类。
  3. 通过extends关键字创建超集的子集。
  4. 如果子集类包含一个构造函数需要调用super调用超集属性和方法。super(props); super.move();

2.公共,私有与受保护的修饰符

1. 默认 public

TypeScript中成员 默认 public。自己,子集和外部都可以访问

2. private(私有成员)

当成员被标记成 private 时,就不能在声明它的类的外部访问。只能自己访问。

3. protected

与private修饰符相似,不同点是:protected可以在派生类中访问。

4. readonly(受保护)

readonly关键字将属性设置为只读的。只读属性必须在声明时或构造函数里被初始化。(只能时声明的时候给值,或者在构造函数初始化的时候赋值)

3. 存取器

ts 支持通过getters/setters 来截取对 对象成员的访问。
能够有效的控制对 对象成员的访问

  1. let passcode = "secret passcode";
  2. class Employee {
  3. private _fullName: string;
  4. get fullName(): string {
  5. return this._fullName;
  6. }
  7. set fullName(newName: string) { // newName = "Bob Smith"
  8. if (passcode && passcode == "secret passcode") {
  9. this._fullName = newName;
  10. }
  11. else {
  12. console.log("Error: Unauthorized update of employee!");
  13. }
  14. }
  15. }
  16. let employee = new Employee();
  17. employee.fullName = "Bob Smith";
  18. if (employee.fullName) {
  19. alert(employee.fullName);
  20. }
  21. // 只带有get不带有set的存取器,会自动被推断为 readonly。
  22. // 这在从代码生成 .d.ts文件时是有帮助的,因为利用这个属性的用户会看到不允许够改变它的值。

4. 静态属性(static)

访问需要在属性前加上类名,与this类似。

5. 抽象类(abstract)

  1. 抽象类做为其他派生类的基类使用,一般不会被实例化。
  2. 不同于接口,抽象类可以包含成员的实现细节。
  3. abstract 关键字用于定义抽象类和抽象类内部定义抽象方法。
  4. 抽象类中的方法不包含具体实现,但是必须在派生类中实现。
  5. 抽象方法的语法与接口方法相似,都是定义方法签名 但是不包含方法体。
  6. 抽象方法必须包含关键字abstract并且可以包含访问修饰符。
  7. 允许创建一个抽象类型的引用,但是不能创建实例。

    6. 构造函数

  8. 类的实例的类型

let`` greeter: Greeter; greeter = ``new`` Greeter(``"world"``);
let greeter: typeof Greeter = Greeter;

7. 用类定义接口

  1. class Point {
  2. x: number;
  3. y: number;
  4. }
  5. interface Point3d extends Point {
  6. z: number;
  7. }
  8. let point3d: Point3d = {x: 1, y: 2, z: 3};