为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Node.js

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


课程章节: 第1章


课程讲师:Brian


课程内容



https://img1.sycdn.imooc.com//63f2bd580001925a08690222.jpg

https://img1.sycdn.imooc.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');

https://img1.sycdn.imooc.com//63f2be2e0001ac0111310619.jpg



















点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消