TypeScript 5.1-5.2: inferenza migliorata
Esplori l'indipendenza dei tipi di setter e getter e le dichiarazioni using.
TypeScript 5.1-5.2: inferenza migliorata è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 4 lezioni in totale.
Panoramica di TypeScript 5.1
TypeScript 5.1, rilasciato a giugno 2023, ha migliorato l'indipendenza dei tipi di setter e getter, la flessibilità del tipo degli elementi JSX, i cursori collegati negli editor e le ottimizzazioni delle prestazioni.
// npm install typescript@5.1Indipendenza dei tipi di setter e getter
Prima della versione 5.1, setter e getter dovevano usare lo stesso tipo. Ora un getter può restituire un tipo più ampio di quello accettato dal setter, una caratteristica utile per i pattern di coercizione.
class Temperature {
get celsius(): string { return this._c + "°C"; } // string
set celsius(value: string | number) { // string | number
this._c = Number(value);
}
private _c = 0;
}undefined come figli JSX
TS 5.1 consente ai componenti di restituire direttamente undefined (oltre a null) dalla propria funzione di rendering, in linea con il comportamento di React 18.
// TS 5.1+: OK
function Widget(): undefined { return undefined; }
// Before 5.1: had to return null or JSX elementMaggiore flessibilità per il tipo di elemento JSX
Il nuovo vincolo JSX.ElementType offre maggiore flessibilità per le factory JSX personalizzate, utile negli ambienti non basati su React.
// Custom JSX element types supported more naturally in 5.1Panoramica di TypeScript 5.2
TypeScript 5.2 (rilasciato ad agosto 2023) ha introdotto le dichiarazioni using (gestione esplicita delle risorse), i metadati dei decorator e i metodi di copia degli array.
// npm install typescript@5.2Dichiarazioni using
using implementa la proposta di gestione esplicita delle risorse: il metodo [Symbol.dispose]() della risorsa viene chiamato quando la risorsa esce dall'ambito.
// Requires lib: ["es2022", "esnext.disposable"]
function getConnection(): Disposable {
const conn = openDb();
return { [Symbol.dispose]() { conn.close(); } };
}
{
using conn = getConnection();
// conn.close() called automatically at block end
}await using per il rilascio asincrono
await using funziona come using, ma chiama un metodo asincrono [Symbol.asyncDispose](), consentendo la pulizia asincrona.
async function run() {
await using db = await connectDb();
// db[Symbol.asyncDispose]() called on exit
}Metadati dei decorator
TS 5.2 implementa la proposta TC39 per i metadati dei decorator, consentendo ai decorator di associare metadati tramite Symbol.metadata.
function meta(value: string) {
return (_: unknown, ctx: DecoratorContext) => {
ctx.metadata[ctx.name] = value;
};
}
@meta("service")
class MyService {}
console.log((MyService as any)[Symbol.metadata]); // { "MyService": "service" }Metodi di copia degli array
TS 5.2 ha aggiunto i tipi per Array.prototype.toSorted, toReversed, toSpliced e with: operazioni immutabili sugli array introdotte da ES2023.
const arr = [3, 1, 2];
const sorted = arr.toSorted(); // [1, 2, 3] — new array, arr unchanged
const reversed = arr.toReversed(); // [2, 1, 3]using in tsconfig per la versione 5.2
Per usare le dichiarazioni using, includa la libreria esnext.disposable nel proprio tsconfig.
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "ESNext.Disposable"]
}
}Riepilogo: TS 5.1-5.2
TS 5.1: tipi indipendenti per getter e setter, restituzioni JSX con undefined. TS 5.2: dichiarazioni using per la pulizia automatica delle risorse, metadati dei decorator e tipi per i metodi di copia immutabili degli array.
Verifica rapida
Che cosa fa la dichiarazione using in TypeScript 5.2?
Che cosa ha imparato
TS 5.1 ha introdotto tipi indipendenti per getter e setter e restituzioni JSX con undefined. TS 5.2 ha introdotto le dichiarazioni using per la gestione automatica delle risorse, i metadati dei decorator e i tipi per i metodi di copia immutabili degli array di ES2023.
Domande Frequenti
La lezione «TypeScript 5.1-5.2: inferenza migliorata» è gratuita?
Sì — il testo completo di «TypeScript 5.1-5.2: inferenza migliorata» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 4 lezioni in totale.
Cosa imparerò in «TypeScript 5.1-5.2: inferenza migliorata»?
Esplori l'indipendenza dei tipi di setter e getter e le dichiarazioni using. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare TypeScript Academy?
Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «TypeScript 5.1-5.2: inferenza migliorata»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?
Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- TypeScript 5.0: decorator standard e parametri di tipo const
- TypeScript 5.1-5.2: inferenza migliorata
- TypeScript 5.3-5.4: nuovo narrowing e NoInfer
- TypeScript 5.5+: dichiarazioni isolate e novità