建设个人银行网站,网站建设shwzzz,wordpress优化方案,一了网站代码示例#xff1a;
// 如果我们直接对一个泛型参数取 length 属性, 会报错, 因为这个泛型根本就不知道它有这个属性
(() {// 定义一个接口,用来约束将来的某个类型中必须要有length这个属性interface ILength{// 接口中有一个属性lengthlength:number}function getLen…代码示例
// 如果我们直接对一个泛型参数取 length 属性, 会报错, 因为这个泛型根本就不知道它有这个属性
(() {// 定义一个接口,用来约束将来的某个类型中必须要有length这个属性interface ILength{// 接口中有一个属性lengthlength:number}function getLengthT extends ILength(x: T): number {return x.length}console.log(getLengthstring(终于等到你还好我没放弃))// console.log(getLengthnumber(123))
})()
重要代码解析
function getLengthT extends ILength(x: T): number定义了一个名为 getLength 的泛型函数。T extends ILength 是类型参数部分其中 T 是类型参数extends ILength 表示类型参数 T 必须是实现了 ILength 接口的类型也就是 T 类型的对象必须具有 length 属性。x: T 表示函数接受一个类型为 T 的参数 x。: number 是函数的返回值类型声明表示该函数将返回一个 number 类型的值。return x.length函数体部分通过返回 x 的 length 属性值来获取传入对象的长度。由于在类型参数上添加了 extends ILength 的约束TypeScript 编译器能够确保 x 具有 length 属性从而避免了直接对泛型参数取 length 属性可能导致的类型错误。