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",
    ...
}

Relaterte artikler