javascript - TypeScript SetIterator.toArray() Metod Känns Inte Igen


Beskrivning :

Jag stöter på ett problem när jag försöker använda toArray()-metoden på ett SetIterator-objekt i TypeScript. Medan metoden finns tillgänglig i JavaScript, visar TypeScript ett fel som indikerar att metoden inte finns på typen SetIterator.

  const str1 = "abcd"
  const set1 = new Set([...str1]);

  let keys: SetIterator<string> = set1.keys();

  return keys.toArray().join("");
// get error Property 'toArray' does not exist on type 'SetIterator<string>'.ts(2339)

Varför kan TypeScript inte känna igen toArray()-metoden?

TypeScript-version:
^5.7.0-dev.20241013
VScode: 1.94.2
vite: "^5.0.8" --target : ES2020 (tsconfig.json/"target" : "ES2020")

Jag har försökt använda explicita typpåståenden, men de har inte löst problemet.
Jag har verifierat att min TypeScript-installation är uppdaterad.
Jag har konsulterat relevant dokumentation och forum utan att hitta en lösning. Jag känner till Array.from()

Svar #1

Förslaget om Iterator Helpers har nyligen nått Steg 4 i TC39-processen, så det kommer snart att bli en del av ECMAScript-standarden. TypeScript implementerade typings för dessa i microsoft/TypeScript#58222 som släpptes med TypeScript 5.6. Eftersom de inte är en del av någon befintlig ES-standard, om du vill använda dem i TypeScript måste du ställa in din --target kompilatoralternativ till "ESNext" för att få de senaste typings. När du gör det kommer din kod att kompileras som förväntat:

const str1 = "abcd"
const set1 = new Set([...str1]);

let keys: SetIterator<string> = set1.keys();

keys.toArray().join(""); // okay

Playground-länk till kod