Lecții din modul (2/2)
Declarații și Fuziune
Fișierele de declarații de tip (cu extensia .d.ts) sunt utilizate în TypeScript pentru a descrie forma codului JavaScript existent fără a implementa nicio logică reală. Acestea conțin doar definiții de tip, interfețe și semnături de funcții.
Aceste fișiere sunt esențiale atunci când utilizați biblioteci terțe scrise în JavaScript pur.
Fuziunea Declarației
Îmbinarea declarațiilor este un comportament în care compilatorul îmbină două sau mai multe declarații separate declarate cu același nume într-o singură definiție.
Cel mai frecvent caz este fuziunea interfeței:
interface User {
name: string;
}
interface User {
age: number;
}
// The resulting User interface has both name and age properties!
const student: User = {
name: 'Alice',
age: 23,
};Dacă proprietățile au același nume, acestea trebuie să fie de același tip, altfel TypeScript va raporta o eroare.
Modificarea modulelor globale și externe
Putem folosi fuziunea declarației pentru a extinde interfețele definite în alte module sau în domeniul global.
De exemplu, dacă dorim să adăugăm o proprietate la obiectul global window al browserului:
declare global {
interface Window {
analyticsToken: string;
}
}Utilizând declare global, îi spunem TypeScript că injectăm o nouă semnătură în interfața globală existentă Window.
Încercați-l singur
Exercițiul 1: Fuziunea Declarației de bază
În TypeScript, interfețele cu același nume în același domeniu sunt îmbinate automat. Declarați un utilizator de interfață cu numele proprietății: șir, apoi într-un al doilea bloc declarați același utilizator de interfață adăugând vârsta proprietății: număr. În cele din urmă, declarați un utilizator constant de tip User cu valori adecvate.
Afișează indiciu
Declarați de două ori interfața User, inserând proprietățile respective și apoi atribuiți câmpurile obiectului utilizator.
Soluție disponibilă după 3 încercări
Exercițiul 2: Extinderea interfeței ferestrei globale
Imaginați-vă că doriți să extindeți interfața globală Window pentru a adăuga o proprietate personalizată numită config de tip Record<șir, șir>. Scrieți declarația corectă folosind declare global pentru a îmbina noua proprietate în interfața globală Window.
Afișează indiciu
Utilizați declare global { interface Window { config: Record<șir, șir>; } }.
Soluție disponibilă după 3 încercări