继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第13天 nest js ts

有梦
关注TA
已关注
手记 82
粉丝 27
获赞 19

课程名称:NestJS 入门到实战 前端必学服务端新趋势


课程章节: 第1章


课程讲师:Brian


课程内容



http://img1.mukewang.com/63f2bd580001925a08690222.jpg

http://img4.mukewang.com/63f2bd5b0001326c07990106.jpg

泛型的常用方式 

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');

http://img.mukewang.com/63f2be2e0001ac0111310619.jpg



















打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP