facebook / facebook/flow

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

Abierto
#2,930 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Typing: destructors
Lenguaje dominante
Rust
Estrellas
22.3k
Forks
1.9k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.