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 属性