美文网首页
TS中类、接口、泛型

TS中类、接口、泛型

作者: 郭_小青 | 来源:发表于2020-12-30 16:48 被阅读0次

    一、类

    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 入门教程

    相关文章

      网友评论

          本文标题:TS中类、接口、泛型

          本文链接:https://www.haomeiwen.com/subject/qnvfoktx.html