typescript - replaceAll er ikke en funksjon-advarsel i VSCode selv om jeg bruker mål ES2021
I et Vue-prosjekt er dette min tsconfig-fil:
{
"extends": "@vue/tsconfig/tsconfig.web.json",
"include": ["env.d.ts", "src/**/*", "src/**/*.vue", "src/**/*.json"],
"exclude": ["src/**/__tests__/*"],
"compilerOptions": {
"target": "es2021",
"module": "ESNext",
"lib":["ES2021", "DOM"], <-- If i remove this line, I get warnings in vue and .ts files
"forceConsistentCasingInFileNames": false,
"composite": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
"allowJs": true,
"outDir": "target",
"noImplicitAny": false,
"types": ["vite/client"],
"strictNullChecks": false,
}
}
Hvis målet mitt er ES2021, forventet jeg å kunne bruke ES2021-funksjoner uten å få feil (f.eks.: "resresr sdf".replaceAll(" ", "") er ikke en funksjon). Det ser imidlertid ut til at jeg må legge til "lib":["ES2021", "DOM"] for å bli kvitt feilen. Hvorfor må jeg legge til lib 2021?
Merk at jeg bruker Volar-utvidelsen med takeover-modus (https://vuejs.org/guide/typescript/overview.html#volar-takeover-mode) og har deaktivert Typescript-vscode-utvidelsen i henhold til deres anbefaling. Men før jeg gjorde dette, fikk jeg også den samme advarselen.
Jeg har prøvd å starte Volar-serveren på nytt mellom endringene, men det hjelper fortsatt ikke...
Takk!
Svar #1
Dette er bare en midlertidig løsning, men et eksplisitt bibliotektmål spesifisert med trippel-skråstrek-direktivet bør få ting til å fungere på en fil-for-fil basis. Så, inntil du finner ut av konfigurasjonen, ville jeg prøvd å legge til følgende linje øverst i filen din:
/// <reference lib="es2021" />
Svar #2
"module" og "target" er compilerOptions-egenskaper, men du har plassert dem utenfor compilerOptions. Det bør være:
"compilerOptions": {
"target": "ES2021",
"module": "ESNext",
...
}
