zoukankan      html  css  js  c++  java
  • [ts]泛型

    类型变量,一个组件可以支持多种数据类型的数据

    基础用法

    function identity<T>(arg: T): T {
      return arg;
    }
    const output = identity('myString');
    console.log(output);

    泛型变量

    function identity<T>(arg: T[]): T[] {
      return arg;
    }

    泛型接口

    interface GenericIdentityFn<T> {
      (arg: T): T;
    }
    
    function identity<T>(arg: T): T {
      return arg;
    }
    
    let myIndetity: GenericIdentityFn<number> = identity;

    泛型类

    class GenericNumber<T> {
      zeroValue: T;
      constructor (value: T) {
        this.zeroValue = value;
      }
    }
    
    const myGenericNumer = new GenericNumber<number>(123);
    console.log(myGenericNumer);

    泛型约束

    interface Lengthwise {
      length: number;
    }
    
    function identity<T extends Lengthwise>(arg: T): T {
      console.log(arg.length);
      return arg;
    }

    在泛型中使用类类型

    class BeeKeeper {
      hasMask: boolean;
      constructor () {
        this.hasMask = false;
      }
    }
    
    class ZooKeeper {
      nametag: string;
      constructor () {
        this.nametag = 'tom';
      }
    }
    
    class Animal {
      numLegs: number;
      constructor () {
        this.numLegs = 0;
      }
    }
    
    class Bee extends Animal {
      keeper: BeeKeeper;
      constructor () {
        super();
        this.keeper = new BeeKeeper();
      }
    }
    
    class Lion extends Animal {
      keeper: ZooKeeper;
      constructor () {
        super();
        this.keeper = new ZooKeeper();
      }
    }
    
    function createInstance<A extends Animal>(c: new() => A): A {
      return new c();
    }
    console.log(createInstance(Lion).keeper.nametag);
    console.log(createInstance(Bee).keeper.hasMask);
  • 相关阅读:
    Java正则表达式的总结
    Mysql数据库操作语句总结
    Java 如何抛出异常、自定义异常
    Java获取系统时间的四种方法
    Mysql与Oracle区别
    Oracle与MySQL的SQL语句区别
    sql语句的各种模糊查询
    基于SpringCloud的Microservices架构实战案例
    一个人走的快,一群人才走的远
    那些会阻碍程序员成长的细节[2]
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/15565908.html
Copyright © 2011-2022 走看看