TS中通过extend添加泛型约束

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属性还可以有其他类型)

猜你喜欢

转载自blog.csdn.net/qq_42931285/article/details/130051380