Înainte de TypeScript 5.0, când trimiteai un array sau un obiect literal ca argument unei funcții generice, TypeScript îi lărgea automat tipul (de exemplu, un array de șiruri ['acasa', 'despre'] era inferat ca string[], nu ca tuplu de literale). Pentru a forța inferența exactă, erai obligat să adaugi as const la fiecare apel de funcție. Modificatorul const pe parametrii de tip generic mută această responsabilitate de la apelant la autorul funcției.
// FUNCȚIE GENERICE CLASICĂ:
function creazaMeniuClasic<T extends readonly string[]>(elemente: T): T {
return elemente;
}
const meniu1 = creazaMeniuClasic(['acasa', 'contact']);
// meniu1 este inferat ca: string[] (tip lărgit, am pierdut valorile specifice!)
// NOU ÎN TYPESCRIPT 5.0+: PARAMETRU DE TIP const T
function creazaMeniuModern<const T extends readonly string[]>(elemente: T): T {
return elemente;
}
const meniu2 = creazaMeniuModern(['acasa', 'contact']);
// meniu2 este inferat AUTOMAT ca: readonly ["acasa", "contact"] (fără niciun 'as const')!
Utilizare Avansată: Extragerea Cheilor din Obiecte Literale
Parametrii de tip const sunt extrem de puternici atunci când construiți librării, routere sau sisteme de configurare de tip Schema, unde aveți nevoie ca proprietățile unui obiect să devină uniuni literale de tipuri:
interface ConfiguratieRuta {
cale: string;
titlu: string;
}
function configureazaRouter<const T extends Record<string, ConfiguratieRuta>>(config: T) {
return {
navigheazaLa: (nume: keyof T) => {
console.log(`Navigare la ruta: ${config[nume].cale}`);
}
};
}
const router = configureazaRouter({
dashboard: { cale: '/panou', titlu: 'Panou Principal' },
utilizatori: { cale: '/users', titlu: 'Gestiune Utilizatori' }
});
// Autocompletare inteligentă: parametrul poate fi DOAR 'dashboard' | 'utilizatori'!
router.navigheazaLa('dashboard'); // Valid
// router.navigheazaLa('setari'); // EROARE DE COMPILARE: Argument of type '"setari"' is not assignable to parameter of type '"dashboard" | "utilizatori"'.
Reguli și Limitări Importante
- Modificatorul
constafectează doar datele literale (array-uri[...], obiecte{...}, numere, string-uri) transmise direct în apelul funcției. Dacă transmiteți o variabilă declarată anterior culet, valoarea nu va fi înghețată automat ca tuplu. - Obiectele inferate prin parametri de tip
constdevin proprietățireadonly, prevenind modificările accidentale prin mutație.
Întrebări & Exemple de Cod:
Parametri de Tip const în TypeScript 5.0+ (<const T>)Ai o nelămurire despre utilizarea comenzii
Parametri de Tip const în TypeScript 5.0+ (<const T>)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.