前言
泛型是一种特殊的变量,只用于表示类型而不是值,称之为:类型变量。 泛型的定义:可以支持不特定的数据类型 要求传入和返回的参数一致。
通俗地说:泛型就是解决类,接口,方法的复用性,和对不特定数据类型的支持
泛型的好处
- 函数和类可以轻松支持多种类型,增强程序的拓展性
- 不必写冗长的业务代码,增强代码的可拓展性
- 灵活控制类型之间的约束
泛型的基本使用
函数参数
- 完成输入和输出的统一,并且做到输入输出任何类型。
function print<T>(arg:T):T {
console.log(arg);
return arg;
}
- TS自动类型判断
print<Number>(123) //自动判断为Number
- 结合interface一起使用
interface Iprint<T> {
(arg: T): T
}
function print<T>(arg:T) {
console.log(arg);
return arg;
}
const Printing: Iprint<number> = print
默认参数
interface Iprint<T = number> {
(arg: T): T
}
function print<T>(arg:T) {
console.log(arg);
return arg;
}
const Printing: Iprint = print
处理多个函数参数
此类一般要求传入多项元组,进行一定的操作后并返回一个元组。 假设要进行一个元素的交换,这个问题我们可以轻松得到解决。
function swap<T, U>(tuple: [T, U]): [U, T]{
return [tuple[1], tuple[0]];
}
函数副作用操作
此一般用于异步请求等其他副作用操作,假设像根据不同的url请求返回不同类型的数据。
function request(url:string) {
return fetch(url).then(res => res.json());
}
最后总结
TS中类、泛型的使用会让避免代码的重复编写,能够极大地提高我们的实践效率。