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
