解释 ts 语法 () => async () => {} [duplicate]

Explain ts syntax () => async () => {} [duplicate]

提问人:Alexander Fernandez 提问时间:11/10/2023 更新时间:11/10/2023 访问量:49

问:

我最近在一个 react 项目中读到了这样的代码:

export const funcName = (
  arg1: Type1,
  arg2: Type2,
  ...
  argN: TypeN,
) => async (dispatch: Dispatch) => {
 // function body
 // ..
};

而且我无法理解双箭头()语法。() => async => {}

有人能告诉我这里发生了什么吗? 谢谢

打字稿 react-typescript

评论

2赞 jonrsharpe 11/10/2023
如果你不熟悉基本的 JS,你会发现 TypeScript 和 React 很棘手。

答:

3赞 OmegaNalphA 11/10/2023 #1

这是在说你正在返回一个接受 Dispatch 的函数。这很可能以某种方式用于 Redux。

这也称为“高阶函数”,即接受某些参数并返回函数的函数。在本例中,为异步函数。

更清楚的是,当你调用 funcname 时,里面的函数不会被执行,它只是被构建。不过,async 函数可以访问传递给 funcname 的参数,因此它有助于构建它。

1赞 Dimava 11/10/2023 #2

如果将其转换为函数语法,则可能更容易理解:

export function funcName (
  arg1: Type1,
  arg2: Type2,
  ...
  argN: TypeN,
) {
  return async function takesDispatch(dispatch: Dispatch) {
   // function body
   // ..
  }
}

所以它被称为

let takesDispatch = funcName(arg1, arg2, ... args)
await takesDispatch(dispatch)