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.tspentru 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.