You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript 如何为箭头函数应用已定义的泛型函数类型

报错原因说明

  1. 第一种写法报错是因为你使用FlipFunction<T1, T2>时,T1、T2还没有在类型标注的作用域内声明,TypeScript无法识别这两个类型名,因此抛出Cannot find name 'T1'错误。
  2. 第二种写法报错是因为泛型参数列表<T1, T2>和后续的FlipFunction之间缺少空格,TypeScript语法解析失败,因此提示'(' expected。

正确写法

普通TS环境写法

只需要在泛型参数列表和类型别名之间添加空格即可:

export const flip: <T1, T2> FlipFunction<T1, T2> 
  = <T1, T2>(A: T1, B: T2) => [B, A];

TSX环境写法

如果是在TSX文件中使用,需要给泛型参数列表添加尾逗号,避免被识别为JSX标签:

export const flip: <T1, T2,> FlipFunction<T1, T2> 
  = <T1, T2,>(A: T1, B: T2) => [B, A];

不可修改泛型类型定义的场景适配

针对你提到的已经提前定义好、无法修改的泛型接口(比如示例中的Component<C,T>),可以用完全相同的逻辑绑定类型:

// 原有已定义、不可修改的泛型接口
interface Component<C,T> extends ComponentBase<ComponentProps<C,T>> {}

// 绑定到箭头函数(非TSX环境)
export const MyComponent: <C, T> Component<C, T> = <C, T>(props: ComponentProps<C, T>) => {
  // 组件实现逻辑
}

// 绑定到箭头函数(TSX环境)
export const MyComponent: <C, T,> Component<C, T> = <C, T,>(props: ComponentProps<C, T>) => {
  // 组件实现逻辑
}

内容的提问来源于stack exchange,提问作者Alasdair McLeay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:09:03