【typescript】 Typescript泛型约束 两种约束方法

Typescript泛型约束

介绍: 泛型约束有两种 分别 指定更加具体类型和 添加约束
 

问题:

我这里通过泛型函数想要访问 event形参的长度, 然后报错

解决问题:

(1).使用指定更加具体类型

function numtion<T>(event: T[]): T[] {
    console.log(event.length);
    return event
}
numtion(['aa'])

这里给形参类型后面指定具体类型 添加数组 , 返回值类型同样添加 数组 [ ]

将类型修改为 T[ ] 只要数组就一定存在 length属性 就可以访问

原因说明: 默认清情况下 泛型函数的类型变量 可以代表多个类型 导致无法访问任何属性

描述:

T 可以代表任意类型 无法保证 一定存在 Length 属性 

此时就需要为泛型函数添加约束 来收缩类型 

(2) 添加约束

interface myinterface {
    length: number
}


function numtion<T extends myinterface>(event: T): T {
    console.log(event.length);
    return event
}
numtion('aa')

这就是解决方法 使用 interface 声明接口名称 并 指定length类型 , 最后 <T extends myinterface> extends 添加 接口名称

描述:

 创建描述约束接口 length 接口提供length属性

通过 extends 使用接口 为泛型添加约束

约束表示 传入的类型必须具有 length 属性


 

猜你喜欢

转载自blog.csdn.net/m0_64494670/article/details/129272034