У меня есть какой-то старый 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, как упомянуто выше, и он выдает ошибку как описано), это ключевое слово, по которому я не могу фильтровать.