Ce face isolatedDeclarations
Pentru a genera un fișier .d.ts, tsc trebuie să știe tipul fiecărui export. Dacă tipul nu este scris (export function cuTva(pret: number) { ... }), tsc îl deduce din corpul funcției, ceea ce cere verificarea tipurilor din tot proiectul. Uneltele rapide (oxc, swc, esbuild cu pluginuri) nu pot face asta.
Cu isolatedDeclarations, tsc cere ca exporturile să aibă tipul scris acolo unde nu este evident din sintaxă: tipul de return al funcțiilor exportate (TS9007), tipul variabilelor exportate calculate (TS9010). Literalele simple (export const oras = "Iași") nu au nevoie de tip.
Are nevoie de declaration sau composite (altfel TS5069). Implicit: false. Este utilă pentru biblioteci și monorepo-uri mari.
Parametri
| Parametru | Descriere |
|---|---|
true |
Exporturile trebuie să aibă tipuri explicite acolo unde nu se văd din sintaxă. |
false |
Valoarea implicită. |
Exemple
Exemplul 1: Exporturi fără tip scris
cuTva nu are tip de return, iar note este calculat cu map. oras (literal) și total (tip scris) sunt în regulă.
// tsconfig.json
{
"compilerOptions": {
"isolatedDeclarations": true,
"declaration": true,
"module": "nodenext",
"target": "es2022"
}
}
// index.ts
export function cuTva(pret: number) {
return pret * 1.19;
}
export const oras = "Iași";
export const note = [9, 10].map(n => n - 1);
export function total(preturi: number[]): number {
return preturi.reduce((s, p) => s + p, 0);
}
Rezultat (tsc 5.9)
$ npx tsc --noEmit
index.ts(1,17): error TS9007: Function must have an explicit return type annotation with --isolatedDeclarations.
index.ts(6,14): error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations.
Exemplul 2: Fără declaration
Opțiunea are sens doar când se generează declarații.
// tsconfig.json
{
"compilerOptions": {
"isolatedDeclarations": true,
"noEmit": true
}
}
Rezultat (tsc 5.9)
$ npx tsc
tsconfig.json(3,5): error TS5069: Option 'isolatedDeclarations' cannot be specified without specifying option 'declaration' or option 'composite'.
Greșeli frecvente
- Să crezi că opțiunea cere tipuri peste tot. Doar exporturile; codul intern rămâne cu tipuri deduse.
Comenzi înrudite
declaration: Generează lângă fiecare fișier .js un fișier .d.ts cu tipurile lui, ca alte proiecte să-l poată folosi cu tipuri.isolatedModules: Dă eroare pentru codul care nu poate fi transformat corect fișier cu fișier (de esbuild, Babel, swc sau Node.js).composite: Pregătește un proiect pentru a fi folosit prin „references” de alte proiecte și construit cu tsc -b.emitDeclarationOnly: tsc scrie doar fișierele .d.ts, fără .js; JavaScript-ul este produs de altă unealtă (esbuild, Babel, swc).