noUncheckedSideEffectImports în TypeScript

Verifică și importurile fără nume (import "./polyfill.js"): fișierul trebuie să existe, altfel apare eroare.

Sintaxă
"compilerOptions": { "noUncheckedSideEffectImports": true }

Ce face noUncheckedSideEffectImports

Un import „cu efect secundar” nu ia nimic din modul: import "./polyfill.js"; doar rulează fișierul. Implicit, tsc nu verifică dacă astfel de fișiere există, așa că o greșeală de scriere ("./polyfil.js") trece de compilare și apare abia la rulare.

Cu noUncheckedSideEffectImports, tsc le verifică la fel ca pe celelalte importuri și dă eroarea TS2307 dacă nu le găsește. Pentru fișiere care nu sunt cod (de exemplu import "./stiluri.css" într-un proiect cu bundler), declară tipul lor: declare module "*.css" {} într-un fișier .d.ts.

Implicit: false. tsc --init din 5.9 o pornește în fișierul nou.

Parametri

Parametru Descriere
true Importurile fără nume trebuie să poată fi găsite.
false Valoarea implicită. Nu sunt verificate.

Exemple

Exemplul 1: Un import greșit și unul de CSS

polyfil.js este scris greșit, iar pentru stiluri.css nu există nicio declarație. Fără opțiune, compilarea trece fără erori.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "noUncheckedSideEffectImports": true,
    "noEmit": true
  }
}

// polyfill.ts
console.log("încărcat");

// index.ts
import "./polyfill.js";
import "./polyfil.js";
import "./stiluri.css";

Rezultat (tsc 5.9)

$ npx tsc
index.ts(2,8): error TS2307: Cannot find module './polyfil.js' or its corresponding type declarations.
index.ts(3,8): error TS2307: Cannot find module './stiluri.css' or its corresponding type declarations.

Greșeli frecvente

  • Să pornești opțiunea într-un proiect cu importuri de CSS sau imagini fără un fișier .d.ts pentru ele. Adaugă declare module "*.css" {}.

Comenzi înrudite

  • allowArbitraryExtensions: Permite importul fișierelor cu orice extensie (.css, .svg) dacă există un fișier de declarații de forma nume.d.css.ts.
  • moduleResolution: Alege regulile după care tsc găsește fișierul din spatele unui import („./calcul.js”, „react”, „@/utile”).
  • --init: Creează un fișier tsconfig.json nou, cu setările recomandate de versiunea curentă de TypeScript.