web-dev-qa-db-ja.com

タイプスクリプトでジェネレーター関数を使用する方法

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++;
    }   
}

これが同じものの遊び場リンクです

14
anandaravindan

nextメソッドは、ジェネレーター関数自体ではなく、関数が返すジェネレーターに存在します。

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

tsconfig.jsones5をターゲットとしていたため、このエラーが表示されていました。

私は単に以下から変更(抜粋)しました:

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

に:

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

エラーはなくなりました。

注:VS Codeの場合、IntelliSenseが変更を認識するためにウィンドウをリロードする必要がありました。

4
vossad01