泛型: 能够反对不特定的数据类型 要求: 传入的参数和返回的参数统一

function getData<T>(value: T):T {    return value}getData<number>(123)getData<string>('123')

泛型类: 传入数字返回数字,传入字符串返回字符串

class MinClass  {    public list:number[] = [];    add (num:number) {        this.list.push(num)    }    min():number {        var minNum = this.list[0]        for (let i=0;i<this.list.length;i++) {            if (minNum > this.list[i]) {                minNum = this.list[i]            }        }        return minNum    }}class MinClass2<T> {    public list:T[] = [];    add (num:T):void {        this.list.push(num)    }    min():T {        var minNum = this.list[0]        for (let i=0;i<this.list.length;i++) {            if (minNum > this.list[i]) {                minNum = this.list[i]            }        }        return minNum    }}let minNum = new MinClass2<number>() // 实例化类,并制订类的T代表的类型是numberminNum.add(1)minNum.add(2)minNum.add(3)console.log(minNum.min()) // 1

类作为参数束缚传入数据

// 类作为参数束缚传入数据class User {    username: string | undefined;    password: string | undefined;}class MysqlDB {    add(user: User):boolean {        console.log(user)        return true    }}let user = new User()user.username = 'z'user.password = '123456'let mysql = new MysqlDB()mysql.add(user)// 泛型类class MysqlDB2<T> {    add(user: T):boolean {        console.log(user)        return true    }}class User2 {    username: string | undefined;    password: string | undefined;}let user2 = new User2()user2.username = 'z'user2.password = '123456'let mysql2 = new MysqlDB2<User2>()mysql2.add(user2)