TS中类、接口、泛型

一、类

public:修饰的属性和方法都是公有的,可以在任何地方被访问到。默认所有的属性和方法都是public。(可以被继承、实例化)

private:修饰的属性和方法是私有的,不能在声明它的类的外部访问(该类不允许继承或实例化)

protected:修饰的属性和方法是受保护的,它与private类似,区别是他在子类中是允许被访问的(只允许被继承,不可实例化)

abstract: 用于定义抽象类或抽象方法,(抽象类不允许被实例化, 抽象类中的抽象方法必须在子类中被实现)

abstract class Animal {
  public name;
  public constructor(name) {
    this.name = name;
  }
  public abstract sayHi();
}

class Cat extends Animal {
  public sayHi() {   // 抽象类中的抽象方法在子类中必须被实现
    console.log(`Meow, My name is ${this.name}`);
  }
}

let cat = new Cat('Tom');

二、接口

接口是用来建立类与类之间的协议,它所提供的只是一种形式,而并没有具体的实现。实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字, 接口是抽象类的延伸

  1. 由interface关键词修饰
  2. 接口中可以定义成员变量, 但是这些成员变量默认都是public、static、final的常量
  3. 接口中没有已经实现的方法,全部都是抽象方法
  4. 一个类实现某一个接口, 必须实现接口中所有的方法
  5. 一个类可以实现多个接口

三、泛型

在定义函数、类或接口的时候, 不预先指定具体的类型, 而是在使用的时候再指定的一种特性

function createArray<T>(length: number, value: T): Array<T> {
    let result: T[] = [];
    for (let i = 0; i < length; i++) {
        result[i] = value;
    }
    return result;
}

createArray<string>(3, 'x'); // ['x', 'x', 'x']
// 或
createArray(3, 'x'); // ['x', 'x', 'x']

参考TypeScript 入门教程

推荐阅读更多精彩内容