Ce face importsNotUsedAsValues
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.
importsNotUsedAsValues (remove, preserve, error) decidea ce se întâmplă cu un import folosit doar pentru tipuri: șters, păstrat pentru efectele lui sau raportat ca eroare. preserveValueImports păstra în JavaScript importurile de valori nefolosite. Amândouă rezolvau, pe bucăți, aceeași problemă, iar combinațiile lor erau greu de înțeles.
verbatimModuleSyntax le înlocuiește cu o singură regulă: importurile scrise fără type rămân în JavaScript, iar cele cu import type dispar. Mesajul erorii TS5102 sugerează chiar această opțiune.
Parametri
| Parametru | Descriere |
|---|---|
importsNotUsedAsValues |
Scoasă. Valorile remove/preserve/error nu mai sunt acceptate. |
preserveValueImports |
Scoasă. |
Exemple
Exemplul 1: Eroarea în tsc 5.9
Ambele opțiuni dau eroare, iar tsc sugerează înlocuitorul.
// tsconfig.json
{
"compilerOptions": {
"importsNotUsedAsValues": "preserve",
"preserveValueImports": true
}
}
Rezultat (tsc 5.9)
$ npx tsc
tsconfig.json(3,5): error TS5102: Option 'importsNotUsedAsValues' has been removed. Please remove it from your configuration.
Use 'verbatimModuleSyntax' instead.
tsconfig.json(4,5): error TS5102: Option 'preserveValueImports' has been removed. Please remove it from your configuration.
Use 'verbatimModuleSyntax' instead.
Exemplul 2: Varianta de azi
Cu verbatimModuleSyntax (opțiune care nu face parte din setările exemplelor de pe site), import type dispare din JavaScript, iar importul obișnuit rămâne. Codul de mai jos rulează la fel cu ambele setări.
import type { ParsedPath } from "node:path";
import { parse } from "node:path";
const fisier: ParsedPath = parse("/home/ana/facturi/ianuarie.pdf");
console.log(fisier.name, fisier.ext);
Rezultat
ianuarie .pdf
Greșeli frecvente
- Să lași opțiunea în
tsconfig.jsondupă actualizarea la TypeScript 5.5+. Compilarea se oprește cu TS5102.
Comenzi înrudite
verbatimModuleSyntax: Importurile rămân exact cum sunt scrise; se șterg doar cele marcate cu type, deci tipurile trebuie importate cu import type.isolatedModules: Dă eroare pentru codul care nu poate fi transformat corect fișier cu fișier (de esbuild, Babel, swc sau Node.js).