1. class DataM<T> {
    2. constructor(private data: T[]) {}
    3. getItem(index: number): T {
    4. return this.data[index]
    5. }
    6. }
    7. const data = new DataM<number>([1]);
    8. data.getItem(0);
    9. /************************************/
    10. interface Item {
    11. name: string;
    12. }
    13. class DataM_2<T extends Item> {
    14. constructor(private data: T[]) {}
    15. getItem(index: number): string {
    16. return this.data[index].name
    17. }
    18. }
    19. const data_2 = new DataM_2([{ // 这个对象一定要包含Item的属性
    20. name: 'pw'
    21. }]);
    22. /*借助 extends 限定类型***********************************/
    23. class DataM_3<T extends number | string> {
    24. constructor(private data: T[]) {}
    25. getItem(index: number): T {
    26. return this.data[index]
    27. }
    28. }
    const func: <T>(param: T) => T = <T>(param: T) => {
      return param;
    };