reactjs - Tipul 'Set' poate fi iterat doar folosind flagul '--downlevelIteration' sau cu un '--target' de 'es2015' sau mai mare
Încerc să obțin toate ID-urile într-un Array și apoi să elimin duplicatele cu React TypeScript.
Iată codul meu :
const uniqueMuscle = workoutexercices.map((exercice: any) => {
let exercicesId = exercice.id;
exercicesId = [...new Set(exercicesId)];
return exercicesId;
});
VSCode subliniază cu roșu [...new Set(exercicesId)]; și îmi spune: Tipul 'Set<unknown>' poate fi iterat doar folosind flag-ul '--downlevelIteration' sau cu un '--target' de 'es2015' sau mai mare
Așa că m-am dus la ts.config și am schimbat valoarea, dar tot apare aceeași eroare.
Iată ts.config-ul meu:
{
"compilerOptions": {
"target": "es2015",
I "downlevelIteration": true
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
Ai vreo idee de ce continui să primesc această eroare?
Răspuns #1
Problema este că vrei să folosești o funcționalitate care este disponibilă doar în versiunea JavaScript ES2015 și în versiunile ulterioare.
Soluția este să actualizați fișierul tsconfig.json, schimbând "target" la cel puțin "es2015" (numit și "es6").
{
"compilerOptions": {
"target": "es2015",
...
}
}
Sursă: Opțiune țintă TSConfig
Răspunsul #2
încearcă exercicesId=Array.from(new Set(exercicesId));
Răspunsul #3
Am avut aceeași eroare, setarea tsconfig.json de la CommonJS la module Es cu target, module, moduleResolution m-a ajutat.
tsconfig.json-ul meu:
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "NodeNext",
"jsx": "react-jsx",
"baseUrl": "./",
"resolveJsonModule": true,
"esModuleInterop": true
}
}
