facebook / facebook/flow

Flow not checking `new C` when `C` is type `Class<...>`

Offen
#2,930 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Typing: destructors
Vorherrschende Sprache
Rust
Sterne
22.3k
Forks
1.9k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I have this code and I would expect it to throw error; but it doesn't.

````javascript
type Foo = {
constructor(a: number): void;
};

function construct(FooClass: Class) {
const w = new FooClass('this is a string');
}
````

Similarly, this doesn't check errors

````javascript
type Foo = {
constructor(): void;
};

function construct(FooClass: Class>) {
const w: Foo = new FooClass();
}
````

I found no other way to say 'this variable is a class, you can call new() on it, only with the expected parameters, and it makes a new object of that type'. Maybe `Class` is not correct, but then what is; `$Type` and friends doesn't work either.

I am needing this, because I want to write at least somehow correct immutable-js Record typedefs; `var ABRecord = Record({a: 1, b: 2})` doesn't create a new record, but a new class, on which you can call `new ABRecord({})`. I want to capture that.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.