当泛型为函数或属性定义类型时,类型是固定的,当业务发生变化时可能不容易维护。例如,函数类型固定为string,后续修改不易维护。比如你需要传入数字类型,那么这个函数就不适用callingGenerics:定义函数、接口、类时,不能Predetermine要使用的数据类型,而是在使用函数、接口、类时确定数据类型。如果直接在函数上定义数据类型,那么这个类型就是固定的,以后只能通过类型重载来方便地改变。为了维护,您可以使用泛型将自定义类型传递给函数。这个类型在调用时指定,调用时确定其函数类型);returnval}这样就定义了泛型,这个就是定义的泛型,传入的类型是T,返回的数据类型也是T,当前类型不确定,调用时确定是哪个类型功能。//调用时确定,自定义类型为number,传入数值类型的值constarr1=add(1)//调用时确定,自定义类型为string,string类型的值为constarr2=add('东方无敌')//调用时确定,如果没有传入类型,系统会自动推断类型constarr3=add(true)输出结果console.log(arr1);控制台。log(arr2);console.log(arr3);使用泛型时可以指定多个泛型参数,传入时可以判断多个值的类型//传入指定参数类型的值和返回指定参数类型函数的值getMsg(val:T,str:S):[T,S]{return[val,str]}这里定义了两个泛型类型,需要传入的时候要定义两个数据类型对应的//调用getMsg指定类型为string和number传入string和numberconstarr=getMsg('东方无敌',100.123)注意这里传入的数据类型必须和定义的数据类型位置一致,否则会报错//错误,与传入的参数类型不匹配,必须是第一个参数字符串,第二个参数数字constarr2=getMsg(100,'东方无敌')由于调用的是泛型判断它的数据类型,可以使用number或者string的方式来检测是否可以使用console.log(arr);console.log(arr[0].split(''));//正常,字符串类型可以使用String方法console.log(arr[1].toFixed(2));//正常,数字类型可以使用数字方法案例源码:https://gitee.com/wang_fan_w/ts-seminar如果你觉得这篇文章对你有帮助,欢迎点亮star