泛型

泛型

泛型

function echo<T>(a: T): T | undefined {  return a}const result = echo<number>(123)function swap<T, U>(arr: [T, U]): [U, T] {  return [arr[1], arr[0]]}const result2 = swap<string, number>(['123', 345])console.log(result2)interface KeyPair<T, U> {  key: T,  value: U}let kp: KeyPair<number, string> = { key: 1, value: "string" }let arr2: Array<number> = [1, 2, 3]

约束泛型

// 这种解决方式并不好,因为不仅仅只有数组才有length,字符串也有lengthfunction echoWithArr<T>(arg: T[]): T[] {  console.log(arg.length)  return arg}// echoWithArr('123')// 定义一个接口interface IWithLength {  length: number}// 告诉这个泛型,它必须有一个length,即继承这个接口function echoWithLength<T extends IWithLength>(arg: T): T {  console.log(arg.length)  return arg}echoWithLength<string>('123')echoWithLength<(string | number)[]>([0, '123'])echoWithLength({ length: 10 })
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部