noImplicitUseStrict în TypeScript

tsconfig: opțiuni scoase (compatibilitate) TypeScript 1.8 (scoasă în 5.5)

Opțiune scoasă care oprea scrierea lui "use strict" în fișierele generate.

Sintaxă
// scoasă; în locul ei:
"compilerOptions": { "alwaysStrict": false }

Ce face noImplicitUseStrict

Opțiunea face parte din „Backwards Compatibility”: a fost marcată ca depreciată în TypeScript 5.0 și scoasă în TypeScript 5.5. În tsc 5.9, prezența ei în tsconfig.json dă eroarea TS5102, iar "ignoreDeprecations": "5.0" nu mai ajută. Șterge-o din configurație.

noImplicitUseStrict împiedica tsc să adauge "use strict"; la începutul fișierelor generate. Era folosită pentru cod vechi care depindea de comportamentul „sloppy” al JavaScript-ului. Modulele sunt însă oricum în mod strict, deci opțiunea a devenit inutilă.

Pentru scripturi simple, "alwaysStrict": false (implicit când strict nu este pornit) are efectul dorit. Mai bine: adaptează codul să funcționeze în mod strict.

Parametri

Parametru Descriere
noImplicitUseStrict Scoasă. Dă TS5102.

Exemple

Exemplul 1: Eroarea în tsc 5.9

Configurația nu mai este acceptată.

// tsconfig.json
{
  "compilerOptions": {
    "target": "es2022",
    "noImplicitUseStrict": true
  }
}

Rezultat (tsc 5.9)

$ npx tsc
tsconfig.json(4,5): error TS5102: Option 'noImplicitUseStrict' has been removed. Please remove it from your configuration.

Greșeli frecvente

  • Să încerci să scoți "use strict" dintr-un fișier CommonJS generat. Modulele sunt strict; codul care nu merge în mod strict trebuie reparat.

Comenzi înrudite

  • alwaysStrict: Verifică fiecare fișier în modul strict al JavaScript și scrie „use strict” în fișierele .js generate.
  • strict: Pornește dintr-o singură mișcare toate verificările stricte de tipuri (strictNullChecks, noImplicitAny și celelalte).
  • moduleDetection: Decide când un fișier este modul (cu scope propriu) și când este script global; force face din fiecare fișier un modul.