от
Я работаю на какой-то пакет JS и я хочу обеспечить отделены определения типа потока как
index.js.flow
, потому что внутреннее поведение немного отличается. Я эту функцию для создания определения компонент
function defineComponent(name, createFunc);
createFunc
-это функция, которая захватывает элементов и возвращает объект, содержащий особые пользовательские действия на этот компонент так можно назвать
defineComponent
таким образом:
const loginForm = defineComponent("login form", () => {
  ...
  ...
  return {
    fillUsername: () => { ...doesn't matter what is return type... },
    fillPassword: () => { ...doesn't matter what is return type... }
  };
});
и эти действия должны быть змеевидных, но я не хочу обременять пользователей всегда упоминать тип возвращаемого значения в пределах каждого пользователя определенных действий. Так что окончательной цепочка должна выглядеть так:
loginForm
  .fillUsername()
  .fillPassword().
Поэтому внутренне
defineComponent
окутает каждого пользователя определенных действий такой:
function defineComponent(..., createFunc) {
  const actions = createFunc(...);

  return actions.map(action => {
    return (...args) => {
      action(...args);
      return actions;
    }
  })
}
Я уже пробовал это (мое тестирование кода):
type ComponentType = $ObjMap((V) => any) => V => ComponentType>;

declare function defineComponent(
  name: string,
  createFunc: () => T
): ComponentType;

const Component = defineComponent("foo", () => {
  return {
    fooAction: () => {},
    barAction: () => {}
  };
});

Component.fooAction().barAction()
Я доходы с потока
No errors!
но поток не показывает никаких ошибок, и когда я делаю что-то вроде
Component.fooAction.barAction()
А также код против не предоставляет автодополнение выше, что :/ Спасибо!

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

...