1. ホーム
  2. typescript

[解決済み] TypeScriptとIterator。IterableIterator<T> 型は配列型ではありません。

2023-04-06 23:13:27

質問

を使用する場合 yield* という表現で をTypeScriptで実行すると、必ずエラーになる。

Type 'IterableIterator'は配列型ではありません。

を使用せずに正しく型を設定するにはどうしたらよいでしょうか。 any を使用せずに、エラーを回避するために正しく型を設定するにはどうすればよいですか?

function* g1(): IterableIterator<number> {
  yield 2;
  yield 3;
  yield 4;
}

function* g2(): IterableIterator<number> {
  yield 1;
  // ERROR: Type 'IterableIterator<number>' is not an array type.
  yield* g1();
  yield 5;
}

const iterator = g2();

どのように解決するのですか?

可能であれば、ターゲットを es2015 (またはそれ以上) に更新して、下位レベルの反復処理を有効にすることなくエラーを解決します。

{
  "compilerOptions": {
    "target": "es2015"
  }
}

es5をターゲットにしている場合は downLevelIteration をtsconfigで明示的に有効にしてください。

{
  "compilerOptions": {
    "target": "es5",
    "downlevelIteration": true
  }
}