课程名称:NestJS 入门到实战 前端必学服务端新趋势
课程章节: 第1章
课程讲师:Brian
课程内容


泛型的常用方式
const pushArr = <T>(arr: T[], item: T):T[] =>{
arr.push(item)
return arr
}
const arrNum: number[] = [1,2,3,4]
// pushArr<number>(arrNum,3)
// 你定义了什么类型 就 替换T
console.log(pushArr<number>(arrNum,3))
// 用泛型 交换位置
function swapGeneric<T, U>(tuple: [T, U]): [U, T]{
return [tuple[1], tuple[0]]
}
const res = swapGeneric<string, number>(['123',123])
console.log(res)写一个函数,这个函数会返回任何传入的值。
eg:不用泛型的话,这个函数可能是下面这样:
function identity(arg: number): number {
return arg;
}如果我们要编写框架,就要考虑到各种返回值的情况,于是可能就会有这样的代码:
type idBoolean = (arg: boolean) => boolean; type idNumber = (arg: number) => number; type idString = (arg: string) => string;
有些小伙伴可能会说,我们可以使用any类型来定义函数:
function identity(arg: any): any {
return arg;
}使用any类型会导致这个函数可以接收任何类型的arg参数,这样就丢失了一些信息:传入的类型与返回的类型应该是相同的。
function identity<T>(arg: T): T {
return arg;
}我们给identity添加了类型变量T。 T帮助我们捕获用户传入的类型(比如:number),之后我们就可以使用这个类型。
identity<string>('hello');
随时随地看视频