Typescript使用独立定义的泛型函数类型时如何在函数体内引用泛型T
要在函数体内引用该泛型类型,只需要在实现函数时,显式声明和类型定义匹配的泛型参数即可,示例代码如下:
type Foo = <T>(x: T) => T const foo: Foo = <T>(x: T) => { // 此处可以直接使用声明的泛型 T let a: T // 函数执行逻辑 a = x return a }
注意事项
- 如果你的项目使用了TSX(React的TS语法),泛型的尖括号会被识别为JSX标签,此时需要在泛型参数后加一个逗号规避语法冲突:
const foo: Foo = <T,>(x: T) => { let a: T // 逻辑实现 return a } - 类型
Foo中定义的泛型<T>属于函数类型的参数,仅作用于类型定义本身,不会作用到具体的函数实现作用域,因此需要在实现函数时显式声明同名泛型,TS会自动校验该泛型和上层类型定义的匹配性,无需担心类型不一致的问题。
内容的提问来源于stack exchange,提问作者Donald Zhu
相关产品推荐
相关产品推荐

