Descrição:
Estou encontrando um problema ao tentar usar o toArray()
método em um SetIterator
objeto no TypeScript. Embora o método esteja disponível em JavaScript, o TypeScript está sinalizando um erro indicando que o método não existe no tipo 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)
Por que o TypeScript não consegue reconhecer toArray()
o método?
Versão do TypeScript:
^5.7.0-dev.20241013
VScode: 1.94.2
Versão: "^5.0.8"
--target
: ES2020 (tsconfig.json // "target" : "ES2020"
)
Eu tentei usar asserções de tipo explícitas, mas elas não resolveram o problema.
Eu verifiquei se minha configuração TypeScript está atualizada.
Eu consultei documentação relevante e fóruns da comunidade sem encontrar uma solução. Eu sei sobre Array.from()
A proposta dos Iterator Helpers atingiu recentemente o Estágio 4 do processo TC39, então ela entrará no padrão ECMAScript em breve. O TypeScript implementou tipagens para elas em microsoft/TypeScript#58222 que foi lançado com o TypeScript 5.6 . Como elas não fazem parte de nenhum padrão ES existente, se você quiser usá-las no TypeScript, precisará definir sua
--target
opção do compilador como"ESNext"
, para obter as tipagens mais recentes. Depois de fazer isso, seu código será compilado conforme o esperado:Link do playground para o código