如何在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
相关产品推荐
相关产品推荐

