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

Relaterade artiklar