typescript - replaceAll är inte en funktion varning i VSCode trots att jag använder target ES2021
I ett Vue-projekt är detta 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,
}
}
Om mitt mål är ES2021, förväntade jag mig att kunna använda ES2021-funktioner utan att få fel (t.ex. "resresr sdf".replaceAll(" ", "") är inte en funktion). Det verkar dock som att jag måste lägga till "lib":["ES2021", "DOM"] för att bli av med felet. Varför måste jag lägga till lib 2021?
Observera att jag använder Volar-tillägget med takeover-läge (https://vuejs.org/guide/typescript/overview.html#volar-takeover-mode) och har inaktiverat Typescript VSCode-tillägget enligt deras rekommendation. Men innan jag gjorde detta fick jag också samma varning.
Jag har försökt starta om Volar-servern mellan ändringarna men ändå utan framgång...
Tack!
Svar #1
Detta är bara en tillfällig lösning, men ett explicit biblioteksmål som anges med trippel-skrådirektivet bör få saker att fungera på per-fil-basis. Så, tills du har klurat ut konfigurationen, skulle jag försöka lägga till följande rad högst upp i din fil:
/// <reference lib="es2021" />
Svar #2
"module" och "target" är egenskaper för compilerOptions men du har placerat dem utanför compilerOptions, det borde vara:
"compilerOptions": {
"target": "ES2021",
"module": "ESNext",
...
}
