TypeScript箭头函数双返回

时间:2018-10-22 08:18:06

标签: typescript ecmascript-6 arrow-functions

我一直在阅读一些用TS编写的React代码,并且遇到了以下代码:

const loggedInRequired = () => (
    toState: State,
    fromState: State,
    // tslint:disable-next-line:no-any
    done: any
) => {
    // userIsLoggedIn can be whatever you need it to be
    if (isAuthenticated()) {
      return true;
    } else {
      // redirect to signin page if the user isn't logged in
      done({ redirect: { name: Routes.Login } });
      return false;
    }
  };

我想知道这个特定部分的含义:

() => (someParam: someType, someOtherParam: someType) => { someCodeHere }

第二组括号之间的部分代表什么?它看起来像一个接口,但是我看不到其背后的逻辑,done显然是一个函数,因为我们稍后在代码中对其进行调用,但是我无法理解该代码的一般含义。

编辑

这只是我的智障。

1 个答案:

答案 0 :(得分:2)

这是一个函数(从() =>开始),它返回另一个函数(另一个从(toState: State, fromState: State,done: any ) =>开始的函数)。

调用loggedInRequired时,结果将是一个函数

const loggedInRequiredResult = loggedInRequired (); // will be a (toState: any, fromState: any, done: any) => boolean
const finalResult = loggedInRequiredResult (null, null, null) // will be a boolean