Старая школа JavaScript класс / предметы и Flow - PullRequest
0 голосов
/ 29 марта 2020

У меня есть какой-то старый JS (Узел, а не браузер). Я постепенно совершенствуюсь, представляя Flow.

У меня есть функция

function Foo() {
  this.prop = null;
}

Я использую ее в другом месте с new:

const myFoo = new Foo();

Я хочу определить поток type для Foo. Как можно это сделать? Я пытался

type FooType<A> {
  (): void,
  prop: A,
}

Но Flow выдает мне ошибку "Невозможно назначить 'new Foo ()" для myFoo, поскольку новый объект несовместим с прототипом функции.

Я также пытался с

type Foo<A> = ()=>void

Поток выдает мне ошибку «Невозможно назначить new Foo для myFoo, поскольку подпись вызова, объявляющая ожидаемый параметр / тип возврата, отсутствует в новом объекте, но существует в FooType. (Более того, если я попытался установить myFoo.prop в другом месте, Flow скажет мне, что prop не существует (очевидно, потому что Flow думает, что я просто возвращаю void после вызова функции).

Я не знаю Я не знаю, как назвать функцию такого типа, когда вы вызываете ее с new, потому что мне никогда не приходилось использовать ее, когда я использовал JS лет go, тогда, когда я вернулся к ней позже, вы могли бы написать с class, поэтому я даже не знаю, как вы называете этот тип конструкции в JavaScript (соединение new с функцией, которая также обращается к this).

Я искал в SO похожий ответ, но я не смог ничего найти на месте. И так как я не знаю, как вызвать этот тип функции (поиск в Google предложил «вызываемый объект», но я попытался сделать это с помощью Flow, как упомянуто выше, и он выдает ошибку как описано), это ключевое слово, по которому я не могу фильтровать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...