TS中通过extend添加泛型约束

文章讲述了如何创建一个接口ILength来约束类型必须包含length属性,并展示了如何在泛型函数id中使用这个约束。函数id接受满足ILength接口的参数,并访问其length属性,参数可以是数组、字符串或具有length属性的对象。示例中,函数id被应用于不同类型的输入,如字符串和对象。
摘要由CSDN通过智能技术生成
interface ILength {
  length: number
}

function id<Type extends ILength>(value: Type): Type {
  value.length
  return value
}

console.log(id(['a', 'c']))
console.log(id('abc'))
console.log(id({ length: 10, name: 'jack' }))

解释:

1.创建描述约束的接口 ILength,该接口要求提供 length 属性。
2.通过 extends 关键字使用该接口,为泛型(类型变量)添加约束。
3.该约束表示:传入的类型必须具有 length 属性。

注意:传入的实参(比如,数组)只要有 length 属性即可(除了length属性还可以有其他类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值