如何从回调操作的结果中获取类型?

Posted

技术标签:

【中文标题】如何从回调操作的结果中获取类型?【英文标题】:How can I get the type from the result of a callback action? 【发布时间】:2021-10-28 19:14:40 【问题描述】:

我不太确定如何用使寻找解决方案变得非常困难的术语来表达我需要做的事情。我也尝试过阅读 Typescript 文档,但找不到与我想要的内容相关的任何内容。我有这个我正在尝试做的精简代码示例:

function test(
  name: string,
  actions: () => /* I need something else here */
) 
  return actions()


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

foo.bar() // Property 'bar' does not exist on type ''.ts(2339)

在这种情况下,是否可以让 Typescript 理解 bar() 应该在 foo 上可用?

【问题讨论】:

只需将您的测试函数声明为。 function test(name: string, actions: () => T) return actions(); 【参考方案1】:

您可以使用typescript generics

function test<T>( //Generic type T
  name: string,
  actions: () => T // Callback return value
): T  // Whole functions return value
  return actions()


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

查看typescript playground

【讨论】:

以上是关于如何从回调操作的结果中获取类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何将内部回调的结果传递给其父函数? [复制]

如何从 apollo-link-error 获取 onError 回调中的 uri?

如何在返回其回调之一结果的函数的 Typescript 中声明类型?

获取“来自本机模块的非法回调调用。此回调类型仅允许从本机代码进行一次调用”

如何在android + viewModel中进行回调

阅读 PDF 时如何从这些回调中获取值?