facebook / facebook/flow

What is correct way to declare custom class factory?

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

Descripción

Hello!
I'm searched, but not found answer on the similar question. Sorry if issue like this already exists.

When we [declare React-class](https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoAbgQwE5gEoCmmAxgC5gC8Y2BAjgK4CWNAFAOQ0mlsCUA3KkJcAdMU6kCAYRiYAzrJYBvVGFVhicAHaaCZFjzDK1x9Vtnl62GAC4wm+gFsARgVxVSAC0azhAcwKkAKpW+gLGAL4ANCpq-kEhPLbm2IyavoYxJtQBlppgbGxhauGo4fyoQA):
```
/* @flow */
var React = require('react');
React.createClass({
connect() {
const url: number = this.getUrl();
},
getUrl(): string {
return '';
}
});
```

Flow throws expected errors:
```
5: const url: number = this.getUrl();
^ string. This type is incompatible with
5: const url: number = this.getUrl();
^ number
```

But when we [declare our custom class factory](https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoAJgUwMYwIYBOmYueAzmWALICeYA3qmGGQC56sCW2JRHmAYXwUAPAAUAfAAoADgTgyyALjBiAlCqHky4iQG5UAX1S0AdNj6tBwslMbNm2OADtnOVlLUMmD30+dsYACuBDAqzkEAtgBGmARgALxgrAAWnGSmAOaYrACqoZ4GvoYAND7M2XkFGiysBJzOmd6+vkSsIc5gAORdRQ7GhmoGQA):
```
/* @flow */
declare class My {
static createClass

(props: P): Class

;
}
My.createClass({
connect() {
const url: number = this.getUrl();
},
getUrl(): string {
return '';
}
});
```

Flow says that it's `No errors!`. Why? How we can describe declaration to achieve the same behaviour as `React.createClass`?

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.