Direct naar de hoofdinhoud
Module 7 · Les 2 van 214/14 in de cursus~15 min
Modulelessen (2/2)

Verklaringen en samenvoeging

Typedeclaratiebestanden (met de extensie .d.ts) worden in TypeScript gebruikt om de vorm van bestaande JavaScript-code te beschrijven zonder enige echte logica te implementeren. Ze bevatten alleen typedefinities, interfaces en functiehandtekeningen.

Deze bestanden zijn essentieel bij het gebruik van bibliotheken van derden die in puur JavaScript zijn geschreven.


Declaratie samenvoegen

Declaratie samenvoegen is een gedrag waarbij de compiler twee of meer afzonderlijke declaraties met dezelfde naam samenvoegt tot één enkele definitie.

Het meest voorkomende geval is het samenvoegen van interface:

TS
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,
};

Als eigenschappen dezelfde naam hebben, moeten ze van hetzelfde type zijn, anders rapporteert TypeScript een fout.


Globale en externe modules aanpassen

We kunnen het samenvoegen van declaraties gebruiken om interfaces uit te breiden die in andere modules of in het globale bereik zijn gedefinieerd.

Als we bijvoorbeeld een eigenschap willen toevoegen aan het globale window object van de browser:

TS
declare global {
  interface Window {
    analyticsToken: string;
  }
}

Door declare global te gebruiken, vertellen we TypeScript dat we een nieuwe handtekening in de bestaande globale Window interface injecteren.


Probeer het zelf

Oefening 1: Basisaangifte samenvoegen

Oefening#ts.m7.l2.e1
Pogingen: 0Laden…

In TypeScript worden interfaces met dezelfde naam in hetzelfde bereik automatisch samengevoegd. Declareer een interface-gebruiker met eigenschapsnaam: string, en declareer vervolgens in een tweede blok dezelfde interface-gebruiker en voeg de eigenschap age: number toe. Declareer ten slotte een constante gebruiker van het type Gebruiker met de juiste waarden.

Editor laden…
Toon hint

Declareer interfacegebruiker tweemaal, voeg de respectieve eigenschappen in en wijs vervolgens de velden toe aan het gebruikersobject.

Oplossing beschikbaar na 3 pogingen

Oefening 2: De globale vensterinterface uitbreiden

Oefening#ts.m7.l2.e2
Pogingen: 0Laden…

Stel je voor dat je de globale Window-interface wilt uitbreiden om een ​​aangepaste eigenschap met de naam config van het type Record<string, string> toe te voegen. Schrijf de juiste declaratie met behulp van declare global om de nieuwe eigenschap samen te voegen in de globale Window-interface.

Editor laden…
Toon hint

Gebruik declare global { interface Window { config: Record<string, string>; } }.

Oplossing beschikbaar na 3 pogingen