zoukankan      html  css  js  c++  java
  • TypeScript 类中的泛型

    class DataManager{
      constructor(private data: string[]) {}
    
      getItem(index: number): string {
        return this.data[index]
      }
    }
    /**
     * 创建了这样一个类,传递进来一个 string类型的数组
     * getItem 可以获取数组的某一项
     */
    
    
    
    
     
    // 现在的需求是不仅可以传递 string 类型,还可以是其他类型
    class DataManager1<T>{
      constructor(private data: T[]) {}
    
      getItem(index: number): T {
        return this.data[index]
      }
    }
    const data = new DataManager1<number>([1,2,3])
    data.getItem(0);
    
    
    
    
    
    // 要求 T 里面必须有一个 Name 属性
    interface Item{
      name: string
    }
    class DataManager2<T extends Item>{
      constructor(private data: T[]) { }
      
      getItem(index: number): string{
        return this.data[index].name
      }
    }
    const data2 = new DataManager2([{ name: '111' }])
    
    
    
    
    // 目前 T 可以是任何类型,现在要求这个 T 只能是 string 类型或者 number 类型
    class DataManager3<T extends number | string>{
      constructor(private data: T[]) {}
    
      getItem(index: number): T {
        return this.data[index]
      }
    }
    const data3 = new DataManager3<string>(['1', '2'])
  • 相关阅读:
    bzoj 2832
    洛谷5月月赛
    P4705 玩游戏
    【bzoj4817】[Sdoi2017]树点涂色&&bzoj3779-重组病毒
    A
    P4715 「英语」Z 语言
    P4714 「数学」约数个数和
    P2860 [USACO06JAN]冗余路径Redundant Paths
    【BZOJ3252】攻略
    BZOJ 1706
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13167463.html
Copyright © 2011-2022 走看看