(二十四)泛型约束

2023-02-22 15:05:48 浏览数 (1)

# 一、泛型约束

说明

在我们之前的定义泛型的时候可以给它传递任何类型的泛型,但是在开发中我们需要在固定的类型中选择一个传递,传递其他的则无效,像这样约束泛型该怎么写呢

  • 例子
代码语言:javascript复制
interface Product {
    title: string
    price: number
}

// 继承上面的属性, 然后在添加自己独有的属性
interface Tshirt extends product {
    size: 'S' | 'L' | 'M'
}

// 这里如果是传递的 Product 的子类的话就会验证成功,否则的话就会验证失败
function displayTitle<T extends Product>(t: T) {
    console.log(t.title)
}

let product: Product = {
    title: '牛仔裤',
    price: 100
}

displayTitle<Product>(product)          // ok
displauTitle<string>(product)           // 不满足泛型约束,因为上面写的是 Product 的子类才可以通过验证

let tshirt: Tshirt = {
    title: '牛仔裤',
    price: 100,
    size: 'M'    
}
displayTitle<Tshirt>(tshirt)        // 这样也是 ok 的因为 Tshirt 是 Product 的子类

# 总结-写在最后

说明

使用了泛型约束以后,就可以指定一组泛型当中的泛型了

0 人点赞