在 TypeScript 中,泛型函数是一种可以在函数签名中使用泛型类型参数的函数。泛型函数可以增加函数的灵活性和可重用性。
泛型类型参数
泛型类型参数是一种参数化类型的方式,它可以以一种更通用的方式定义函数,以便可以在多种不同的情况下重复使用。
在 TypeScript 中,可以使用 <T>
的形式来定义泛型类型参数,其中 T
可以是任何大写字母。例如:
function identity<T>(arg: T): T { return arg; }
上面的函数 identity
接受一个类型为 T
的参数 arg
,并返回类型也为 T
的值。在这个示例中,T
是一种通用类型,可以在函数中使用。
泛型函数的使用
使用泛型函数时,可以在调用函数时指定数据类型,也可以让 TypeScript 推断数据类型。例如:
let output1 = identity<string>("hello"); let output2 = identity(123);
在第一次调用 identity
函数时,显式指定类型为 string
,第二次调用时 TypeScript 可以推断出类型为 number
。
泛型函数的约束
有时我们希望泛型函数只能接受某些特定类型的参数。可以使用泛型约束来实现这一点。例如:
-- -------------------- ---- ------- --------- ---------- - ------- ------- - -------- ----------------- ------- ---------------- --- - - ------------------------ -- ---------- ------ ---- - --- ------- - ------------------------ --- ------ ----
上面的代码中,loggingIdentity
函数只接受实现了 Lengthwise
接口的类型。这种方法可以在编译期间验证代码,并防止在运行时发生错误。
实际示例
下面是一个实际的示例,演示了如何使用泛型函数来处理不同类型的数据。
-- -------------------- ---- ------- -------- -------------- ---- ---------- ------ -- -- --------- --- - ----- ------ - --- --- ---- - - -- - - ----------- ---- - ----- ---- - ------- -- ----------------- - ------------------ - - ------ ------- - ----- ------- - --- -- -- -- --- ----- ----- - --------------- ------ -- ---- - - --- --- ----- ------- - --------- --------- --------- -------- ----- ----------- - --------------- ------ -- ----------- - ---
上面的 filter
函数可以过滤出符合条件的元素,并返回一个新的数组。在调用 filter
函数时,可以指定类型参数为 number
或 string
,并传入一个回调函数,根据需要过滤元素。
总结
泛型函数是 TypeScript 中非常有用的工具,可以在编写前端代码时增加灵活性和可维护性。使用泛型函数时需要注意约束条件,以便在编译期间检测错误并避免运行时错误。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6469be28968c7c53b0993428