TypeScript从入门到精通(二十)函数泛型

函数泛型

我们先写一个简单的联合类型demo
为了保证方法可用 我们就利用字符串模板来拼接这两个参数

function join(first:string|number,second:string|number){
    return `${first}${second}`
}
join("哈哈","小猿")

上后面的代码是没有任何问题的。
现有一个新的需求:first这个参数为string类型时, second也要为string类型,反之同理。
利用我们前面所学的知识很难实现,所以这个时候就需要泛型来解决这个问题

函数泛型的写法:

尖括号<T>,括号里面的T是任何字母或单词都可以替换的 写你想写的名字,但是最好要语义化 ,一般情况下我们约定俗成写T(显得专业)

function join<T>(first:T,second:T){
    return `${first}${second}`
}
join<string>("哈哈","小猿")

在我们调时join函数方法时,使用join<类型>(参数)(例如:join<string>("哈哈","小猿")) 在尖括号里面填写相应的类型即可
如果想要两个参数都是number那就可以这样写

join<number>(1,2
泛型中数组的使用:

如果传递过来的是数组,我们有两种定义方法

  • 泛型后面添加[]
  • 泛型前面添加Array
//第一种
function Monkey<T>(one:T[]){
    return one
}
Monkey<string>(["哈哈","小猿"])
//第二种
function Monkey<T>(one:Array<T>){
    return one
}
Monkey<number>([1,2])
console.log(Monkey<number>([1,2]))
//终端输出结果:[ 1, 2 ]
多个泛型的定义:

一个函数可以定义多个泛型

function join<T,P>(one:T,two:P){
    return `${one}${two}`
}
join<string,number>("我是哈哈小猿",23)
console.log(join<string,number>("我是哈哈小猿",23))
泛型的类型推断:
function join<T,P>(one:T,two:P){
    return `${one}${two}`
}
join("我是哈哈小猿",23)

上面一段代码我们在调用join函数方法时没有规定类型,其实程序已经推断出我们的类型了
把鼠标放在join("我是哈哈小猿",23)这行代码上,你就会发现其中的奥秘

在这里插入图片描述
注意: 我们在使用泛型的时候使用类型推断,会降低代码的可读性。 使用了泛型,那就最好不要使用类型推断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值