Skip to content

Commit 36c2fcb

Browse files
committed
TSConfig Italian translation isolatedModules
1 parent f98394f commit 36c2fcb

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
display: "Moduli Isolati"
3+
oneline: "Si assicura che ogni file possa essere compilato in sicurezza senza basarsi sulle altre importazioni"
4+
---
5+
6+
Quando usi TypeScript per produrre codice JavaScript, è usanza comune usare altri transpilers come ad esempio [Babel](https://babeljs.io).
7+
Tuttavia, gli altri transpilers possono operare solo su un singolo file alla volta, questo significa che non possono fare cambiamenti che dipendono dalla comprensione dell'intero progetto.
8+
Questa regola si applica anche al `ts.transpileModule` API di TypeScript che è usata da alcuni strumenti di esecuzione.
9+
10+
Queste limitazioni possono causare problemi di esecuzione con alcune funzionalità di TypeScript come `const enum` e `namespace`.
11+
Impostando la flag `isolatedModules` chiedi a TypeScript di avvisarti se stai scrivendo del codice che non può essere correttamente interpretato da un processo di transpilation su un singolo file.
12+
13+
Esso non cambia la forma del tuo codice e nemmeno la forma del controllo di TypeScript e il processo di emissione.
14+
15+
Alcuni esempi di codice che non funzionano quando `isolatedModules` è abilitato.
16+
17+
#### Esportazione di idententificatori senza valore
18+
19+
In TypeScript, puoi importare un _type_ e di conseguenza esportarlo:
20+
21+
```ts twoslash
22+
// @noErrors
23+
import { tipo, funzione } from "modulo";
24+
25+
funzione();
26+
27+
export { tipo, funzione };
28+
```
29+
30+
Dato che non ci sono valori per `tipo`, l'emissione `export` non proverà ad esportarlo (questo perché ci sarebbe un errore di esecuzione in JavaScript):
31+
32+
```js
33+
export { funzione };
34+
```
35+
36+
I transpilers a singolo file non sanno se `tipo` produce un valore o meno, quindi c'è un errore nell'esportazione di un nome che si riferisce solo ad un tipo.
37+
38+
#### File Non-Moduli
39+
40+
Se `isolatedModules` è impostato, tutti file di implementazione devono essere _modules_ (ciò significa che esso ha alcune forme di `import` / `export`). Un errore appare se nessun file è un modulo:
41+
42+
```ts twoslash
43+
// @errors: 1208
44+
// @isolatedModules
45+
function fn() {}
46+
```
47+
48+
Questa regola non viene applicata ai file `.d.ts`
49+
50+
#### Riferimenti ai membri `const enum`
51+
52+
In TypeScript, quando ti riferisci ad un membro `const enum`, il riferimento viene rimpiazzato dal suo valore attuale nel JavaScript compilato. Cambiando questo TypeScript:
53+
54+
```ts twoslash
55+
declare const enum Numeri {
56+
Zero = 0,
57+
Uno = 1,
58+
}
59+
console.log(Numbers.Zero + Numbers.Uno);
60+
```
61+
62+
Con questo JavaScript:
63+
64+
```ts twoslash
65+
// @showEmit
66+
// @removeComments
67+
declare const enum Numeri {
68+
Zero = 0,
69+
Uno = 1,
70+
}
71+
console.log(Numbers.Zero + Numbers.Uno);
72+
```
73+
74+
Senza la conoscenza del valore di questi membri, gli altri transpilers non possono rimpiazzare il riferimento a `Numeri`, questo comporterebbe un errore di esecuzione se lasciato a se stesso (dal momento in cui non ci sono oggetti di tipo `Numeri` in esecuzione).
75+
A causa di questo, quando `isolatedModules` è impostato, c'è un errore nel riferire un ambiente ad un membro `const enum`.

0 commit comments

Comments
 (0)