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

如何在TypeScript中正确获取回调action的返回值类型

核心原因是当前test函数未对actions的返回值做类型推导,TypeScript默认将actions的返回值判定为空对象类型,因此无法识别foo上的bar方法。

最灵活的解决方案是给test函数添加泛型参数,让TypeScript自动推导actions返回值的具体类型,修改后代码如下:

// 泛型T用于承接actions返回值的类型
function test<T>(
  name: string,
  actions: () => T
): T {
  return actions()
}

const foo = test('foo', () => ({
  bar() {
    console.log('foo.bar')
  }
}))

foo.bar() // 类型校验正常,无报错

此时TypeScript会根据你传入的箭头函数返回值自动推导泛型T的类型,foo的类型会被自动识别为{ bar: () => void }。

如果你的actions返回值结构是固定的,也可以显式定义接口来约束类型:

interface ICustomActions {
  bar: () => void
}

function test(
  name: string,
  actions: () => ICustomActions
): ICustomActions {
  return actions()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:30:05