94 votes

TypeScript et Iterator: Type 'IterableIterator <T> 'n'est pas un type de tableau

Lorsque j'utilise l' expression yield* sur TypeScript, une erreur est toujours générée.

Le type 'IterableIterator' n'est pas un type de tableau.

Comment définir les types correctement sans utiliser any pour éviter les erreurs?

 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();
 

206voto

devilmaster Points 439

Si vous ciblez es5, vous devrez activer explicitement l'itération de niveau inférieur dans tsconfig:

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

-11voto

Deepak Points 1235
 tsc demo.ts --lib "es6","dom" --downLevelIteration
 

Utilisez cette commande pour la compilation. Cela résoudra le problème. L'ajout de ces valeurs dans tsconfig.json ne résoudra pas le problème si tsconfig.json est créé avec target: es5. la mise à jour manuelle de tsconfig.json ne fonctionnera pas. Utilisez cette commande, changez simplement le nom de votre fichier .ts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X