Подтвердить что ты не робот

Как использовать функцию генератора в typescript

Я пытаюсь использовать функцию генератора в машинописи. Но компилятор выдает ошибку

error TS2339: Property 'next' does not exist on type

Ниже приведен наиболее близкий пример моего кода.

export default class GeneratorClass {
    constructor() {
        this.generator(10);
        this.generator.next();
    }
    *generator(count:number): Iterable<number | undefined> {
        while(true)
            yield count++;
    }   
}

{ while(true) yield count++; } } rel=noreferrer>Вот ссылка на игровую площадку для того же

4b9b3361

Ответ 1

В генераторе существует метод next, который возвращает функция, а не сама функция генератора.

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

Ответ 2

Я видел эту ошибку, потому что мой tsconfig.json был нацелен на es5.

Я просто изменил (выдернул) из:

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

в

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

и ошибка исчезла.

Примечание. Для кода VS мне нужно перезагрузить окно для IntelliSense, чтобы распознать изменения.

Ответ 3

console.log(function.constructor.name)//Функция

изменил tsconfig.json на target: esnext

console.log(function.constructor.name)//GeneratorFunction

спасибо @vossad01