Стрелки TypeScript функции двойного возврата - PullRequest
0 голосов
/ 22 октября 2018

Я читал какой-то код React, написанный на TS, и наткнулся на этот код:

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 голосов
/ 22 октября 2018

Это функция (которая начинается с () =>), которая возвращает другую функцию (другая функция, начинающаяся с (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...