Saltar al contenido

Cómo usar la función de generador en mecanografiado

Virginia, parte de este gran equipo, nos hizo el favor de crear este artículo porque controla muy bien el tema.

Solución:

los next El método existe en el generador que devuelve la función, no en la función del generador en sí.

export default class GeneratorClass 
    constructor() 
        const iterator = this.generator(10);
        iterator.next();
    
    *generator(count:number): IterableIterator 
        while(true)
            yield count++;
       

Estaba viendo este error porque mi tsconfig.json estaba apuntando es5.

Simplemente cambié (extraído) de:

"target": "es5",
"lib": [
    "es5",
    "es2015.promise"
]

a:

"target": "es6",
"lib": [
    "es6"
]

y el error se fue.

Nota: Para VS Code, necesitaba volver a cargar la ventana para que IntelliSense reconociera el cambio.

Para resolver el problema, es muy importante conocer las diferencias entre las funciones generadoras (generadores para abreviar) y sus valores de retorno.

A función de generador (marcado con un asterisco) es una función que devuelve un objeto generador. El objeto generador cumple los requisitos de un iterador y un iterable.

iteradores tener un next método (ese es el método que está buscando en su pregunta). Y iterables tiene una propiedad llamada Symbol.iterator (especificando un iterador predeterminado), lo que los hace utilizables en bucles for.

Debido a que una función generadora devuelve un objeto generador y un objeto generador es un iterador iterable, debe declarar un tipo de retorno de IterableIterator. En tu caso será IterableIterator.

Debido a que los términos aquí son confusamente similares, grabé un tutorial de Generator que explica las diferencias. Asegúrese de configurar su target a es6 en tus tsconfig.jsoncuando se utilizan funciones de generador.

Reseñas y valoraciones

Si te ha sido de utilidad nuestro artículo, te agradeceríamos que lo compartas con el resto programadores de esta manera contrubuyes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.