Direct naar de hoofdinhoud
Module 1 · Les 2 van 22/14 in de cursus~10 min
Modulelessen (2/2)

Arrays en tupels

In JavaScript kunnen arrays elk type elementen bevatten en dynamisch groeien of krimpen. TypeScript voegt statische typecontrole toe om ervoor te zorgen dat collecties homogeen blijven of een vaste typestructuur respecteren.


Arrays (homogene verzamelingen)

In TypeScript zijn er twee gelijkwaardige manieren om het type te definiëren van een array die elementen van hetzelfde type bevat:

  1. Gebruik het elementtype gevolgd door vierkante haakjes ([]):

    TS
    const numbers: number[] = [1, 2, 3];
    const strings: string[] = ['a', 'b', 'c'];
  2. Gebruik het algemene type Array<T>:

    TS
    const numbers: Array<number> = [1, 2, 3];

Beide syntaxis zijn volledig geldig, maar de eerste (type[]) is de conventionele en meest voorkomende stijl. Als u een ongeldige waarde probeert in te voegen (bijvoorbeeld numbers.push("hello") in een number[] array), genereert TypeScript een compileerfout.


Tupels (matrices met vaste lengte)

Een tuple is een speciaal type array met een vast aantal elementen, waarbij elk element een vooraf gedefinieerd specifiek type heeft op basis van zijn positie.

Om bijvoorbeeld een HTTP-antwoord op te slaan dat bestaat uit een statuscode (nummer) en een bericht (tekenreeks):

TS
const response: [number, string] = [200, 'OK'];

In dit geval:

  • Het eerste element (response[0]) moet een number zijn.
  • Het tweede element (response[1]) moet een string zijn.
  • De array moet worden geïnitialiseerd met precies 2 elementen.

Alleen-lezen tupels (readonly)

Een belangrijk detail over tupels in TypeScript is dat het tijdens runtime normale JavaScript-arrays zijn. Dit betekent dat mutatieve methoden zoals .push() of .pop() technisch beschikbaar zijn en de lengte van de tupel kunnen veranderen, waarbij typecontroles gedeeltelijk worden omzeild.

Om dit gedrag te voorkomen en echte onveranderlijkheid af te dwingen, kunnen we de readonly modifier gebruiken:

TS
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!

Probeer het zelf

Oefening 1: Reeks getallen

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

Declareer een array met de naam scores die alleen getallen bevat en is geïnitialiseerd met de waarden 90, 85 en 95. Gebruik de expliciete typeannotatie voor de array. Gebruik geen enkel type.

Editor laden…
Toon hint

Gebruik de syntaxis const scores: getal[] = ... of Array<getal>.

Oplossing beschikbaar na 3 pogingen

Oefening 2: 3D-coördinatentupel

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

Declareer een tupel met de naam punt dat een 3D-coördinaat vertegenwoordigt (drie getallen voor X, Y, Z) en is geïnitialiseerd met de waarden 10, 20, 30. Gebruik expliciete typeannotatie.

Editor laden…
Toon hint

Het tupeltype moet [getal, getal, getal] zijn.

Oplossing beschikbaar na 3 pogingen

Oefening 3: Locatie-info Tupel

Oefening#ts.m1.l2.e3
Pogingen: 0Laden…

Declareer een tupel met de naam locationInfo die een geografische coördinaat met zijn naam vertegenwoordigt. Het moet bevatten: breedtegraad (getal), lengtegraad (getal) en de plaatsnaam (string). Initialiseer het met de waarden 41.9028, 12.4964 en 'Rome'.

Editor laden…
Toon hint

Gebruik de syntaxis om een ​​tupel met drie elementen te definiëren: [getal, getal, string].

Oplossing beschikbaar na 3 pogingen

Oefening 4: Tupel voor logboekinvoer

Oefening#ts.m1.l2.e4
Pogingen: 0Laden…

Declareer een tupel met de naam logEntry die een logregel vertegenwoordigt. Het moet in volgorde het volgende bevatten: een tijdstempel (nummer), een ernstniveau (tekenreeks) en een foutmelding (tekenreeks). Initialiseer het met tijdstempel 1716300000, niveau 'INFO' en het bericht 'Applicatie gestart'.

Editor laden…
Toon hint

Gebruik de syntaxis om een ​​tupel met drie elementen te definiëren: [getal, tekenreeks, tekenreeks] en wijs de opgegeven waarden toe.

Oplossing beschikbaar na 3 pogingen