Ich habe folgende Code-Schnipsel wurde:Typoskript Iteratoren Spielplatz Fehler
var iterator: IterableIterator<string> = iterBreadth(tree);
for(var item of iterator){
log(item)
}
iterBreadth
ist nur eine Generatorfunktion, die einen Iterator zurückgibt. Iteratoren in TypeScript sind vom Typ IterableIterator<T>
, wobei T
in meinem Fall ein string
ist.
Meine Frage ist - warum ist der Spielplatz bei mir an der Linie for..of
Iterator Schleife schreien:
?
Wie kommen Iteratoren nur zu Arrays und String?
Ich habe am official docs gefunden, daß, wenn ES3 oder ES5 Targeting nur Arrays in for..of
Schleifen erlaubt sind. Aber das erklärt nicht, was Strings in der playground error-Message tun.
Außerdem kann ich sehen, dass Typoskript harte Zeit transpiling for..of
ist mit. Der folgende Code scheint genau transpiled gegen Arrays werden, da es nur über Indizes Iterieren (0, 1, 2), nicht im nächsten Aufruf: mit der für/von Schleife
var iterator = iterBreadth(tree);
for (var _i = 0, iterator_1 = iterator; _i < iterator_1.length; _i++) {
var item = iterator_1[_i];
log(item);
}
Sie müssen es 'es6' (oder höher) zielen, um dies zu können. Aber es scheint, dass du das schon weißt, also was fragst du genau? Warum wird das Ziel 'es6' benötigt? –
@NitzanTomer Nein, die Frage betrifft die Fehlermeldung. Warum zeigt es 'string' an ?! Ich finde es irreführend. – ducin