facebook / facebook/flow

Endless iterator

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

Descripción

Let's suppose we have following code:

```js
function* gen(): Iterator {
while (true)
yield 2
}

const generator: Iterator = gen()
const generatorResult: IteratorResult = generator.next()
// const two:number = generatorResult.value // typechecker forbids this
if (!generatorResult.done) {
const two:number = generatorResult.value
}
```

`generator` will never return. It will always yield. Thus we can say that it type is no only `Iterator` but it can be more precisely defined as

```js
interface EndlessIterator {
next(): {done: false, value: T};
}
const generator: EndlessIterator = gen()
```

This allows to directly obtain next value of the generator by `generator.next().value` instead of unnecessary check of `done` property.

**Does Flow allow to somehow change return type of generator function to something like `EndlessIterator` to avoid unnecessary `done` property checks?**

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.