Ty­pe­Script heeft een aantal be­lang­rij­ke functies die de ont­wik­ke­ling van we­bap­pli­ca­ties fun­da­men­teel ver­be­te­ren. Deze Ty­pe­Script-tutorial geeft u een inleiding tot de pro­gram­meer­taal en legt enkele van de be­lang­rijk­ste functies en toe­pas­sin­gen uit, evenals de voor- en nadelen ervan.

Wat is Ty­pe­Script?

Ty­pe­Script is ont­wik­keld door Microsoft en bouwt voort op de pro­gram­meer­taal Ja­vaScript, die veel wordt gebruikt bij we­bont­wik­ke­ling. Een op­val­len­de ei­gen­schap van Ty­pe­Script is statische typering. In te­gen­stel­ling tot Ja­vaScript, dat dy­na­mi­sche typering heeft, kunt u in Ty­pe­Script datatypes voor va­ri­a­be­len, functies en pa­ra­me­ters de­cla­re­ren. Hierdoor kunnen co­de­fou­ten vroeg­tij­dig worden op­ge­spoord, waardoor fouten kunnen worden ge­ï­den­ti­fi­ceerd nog voordat de code is uit­ge­voerd. Statische typering verbetert niet alleen de kwaliteit van de code aan­zien­lijk, maar ook de lees­baar­heid ervan.

De syntaxis van Ty­pe­Script is vrijwel identiek aan die van Ja­vaScript, waardoor het veel een­vou­di­ger is om het te in­te­gre­ren in bestaande Ja­vaScript-projecten. Ty­pe­Script is zelfs een superset van Ja­vaScript, wat betekent dat alle correcte Ja­vaScript-code ook geldige Ty­pe­Script-code is. Hierdoor kunt u ge­lei­de­lijk migreren naar Ty­pe­Script en pro­fi­te­ren van de voordelen van statische typering en andere functies, zonder dat u uw bestaande codebase volledig hoeft te her­schrij­ven.

Hier is een eenvoudig Ja­vaScript-voorbeeld:

function greet(name) {
    return "Hello, " + name;
}
console.log(greet(123)); // Output: "Hello, 123"
ja­vascript

In de bo­ven­staan­de code is de functie greet niet beperkt tot een specifiek ge­ge­vens­ty­pe voor de parameter name. Dit betekent dat de functie nog steeds werkt, zelfs als we een getal als argument doorgeven.

In Ty­pe­Script kan de code er als volgt uitzien:

function greet(name: string): string {
    return "Hello, " + name;
}
console.log(greet(123)); // Error in TypeScript
ty­pe­script

Hier hebben we de parameter name als een te­ken­reeks ge­de­cla­reerd. Als we de functie met een getal proberen te gebruiken, geeft Ty­pe­Script een fout­mel­ding weer omdat het door­ge­ge­ven ge­ge­vens­ty­pe niet over­een­komt met het verwachte ge­ge­vens­ty­pe.

Dit voorbeeld laat zien hoe Ty­pe­Script helpt om fouten in een vroeg stadium op te sporen, waardoor de kwaliteit van de code wordt verbeterd door onjuist gebruik van datatypes te voorkomen. Het is be­lang­rijk om op te merken dat Ty­pe­Script uit­ein­de­lijk wordt ge­com­pi­leerd naar Ja­vaScript, waardoor het in elke Ja­vaScript-omgeving kan worden uit­ge­voerd. Dit betekent echter dat u alleen tijdens de ont­wik­ke­lings­fa­se pro­fi­teert van de voordelen van ty­pe­vei­lig­heid.

Waarvoor wordt Ty­pe­Script gebruikt?

Ty­pe­Script is es­sen­ti­eel voor ver­schil­len­de aspecten van soft­wa­re­ont­wik­ke­ling, vooral in situaties waarin ty­pe­vei­lig­heid en co­de­k­wa­li­teit van cruciaal belang zijn.

Een prominent ge­bruiks­sce­na­rio voor Ty­pe­Script is we­bont­wik­ke­ling. Hier zorgt Ty­pe­Script ervoor dat Ja­vaScript-code op een manier wordt ge­schre­ven die deze veiliger en ge­mak­ke­lij­ker te on­der­hou­den maakt. Dit is gunstig bij uit­ge­brei­de frontend-projecten met complexe codebases. Ty­pe­Script kan echter ook aan de ser­ver­zij­de (backend) in Node.js-toe­pas­sin­gen worden ge­ïm­ple­men­teerd om een extra be­vei­li­gings­laag te bieden. In ser­ver­lo­ze ar­chi­tec­tu­ren zoals AWS Lambda en Azure Functions helpt Ty­pe­Script om fouten te mi­ni­ma­li­se­ren en een be­trouw­ba­re uit­voe­ring te ga­ran­de­ren.

Cross-plat­for­m­ont­wik­ke­ling is nog een ander gebied waarop Ty­pe­Script zijn sterke punten laat zien. Het kan cross-plat­form­toe­pas­sin­gen en de ont­wik­ke­ling van mobiele apps aan­zien­lijk op­ti­ma­li­se­ren. Fra­me­works zoals Na­ti­ve­S­cript en React Native bieden on­der­steu­ning voor Ty­pe­Script als het gaat om het pro­gram­me­ren van mobiele apps voor ver­schil­len­de platforms. Bij de ont­wik­ke­ling van games wordt Ty­pe­Script gebruikt in projecten die ge­bruik­ma­ken van WebGL of game-engines zoals Phaser of Babylon.js. De ty­pe­vei­lig­heid van Ty­pe­Script helpt de kwaliteit en on­der­houd­baar­heid van games te ver­be­te­ren.

Ty­pe­Script wordt ook gebruikt voor da­ta­vi­su­a­li­sa­tie- en ana­ly­se­pro­jec­ten. Bi­bli­o­the­ken zoals D3.js bieden on­der­steu­ning voor Ty­pe­Script en maken het mogelijk om ge­a­van­ceer­de dash­boards en vi­su­a­li­sa­ties te creëren.

Hoe Ty­pe­Script te in­stal­le­ren

Het in­stal­le­ren van Ty­pe­Script is eenvoudig en kost slechts een paar stappen. Als u Node.js op uw computer hebt, kunt u Ty­pe­Script in­stal­le­ren met npm (Node Package Manager).

Stap 1: Node.js down­lo­a­den

Con­tro­leer of Node.js op uw computer is ge­ïn­stal­leerd. Als u Node.js nog niet hebt ge­ïn­stal­leerd, kunt u het down­lo­a­den en in­stal­le­ren vanaf de officiële website.

Stap 2: In­stal­leer Ty­pe­Script in de terminal

Open uw op­dracht­prompt (bij­voor­beeld Op­dracht­prompt in Windows of de terminal op macOS of Linux) en voer de volgende opdracht in om Ty­pe­Script globaal te in­stal­le­ren:

npm install -g typescript
bash

De vlag -g (global) in­stal­leert Ty­pe­Script op uw hele systeem, zodat u het overal kunt gebruiken.

Stap 3: Con­tro­leer de ge­ïn­stal­leer­de versie

U kunt con­tro­le­ren of de in­stal­la­tie succesvol was door het volgende commando uit te voeren:

tsc -v
bash

Dit commando laat zien welke versie van Ty­pe­Script is ge­ïn­stal­leerd. Als er een ver­sie­num­mer wordt weer­ge­ge­ven, betekent dit dat de in­stal­la­tie is geslaagd.

Na de in­stal­la­tie kunt u Ja­vaScript-bestanden genereren door Ty­pe­Script-bestanden (met de extensie .ts) aan te maken en deze te com­pi­le­ren met de Ty­pe­Script-compiler tsc.

Stap 4: Maak een Ty­pe­Script-bestand aan

Maak een Ty­pe­Script-bestand aan, bij­voor­beeld app.ts, en voeg uw Ty­pe­Script-code toe.

type Person = { name: string, age: number };
const alice: Person = { name: "Alice", age: 30 };
console.log(`Hello, I am ${alice.name} and I am ${alice.age} years old.`);
ty­pe­script

Stap 5: Compileer het bestand

Compileer het Ty­pe­Script-bestand door de volgende opdracht in te voeren:

tsc app.ts
bash

Hierdoor wordt app.ts ge­com­pi­leerd tot een Ja­vaScript-bestand met de naam app.js. Ver­vol­gens kunt u het Ja­vaScript-bestand uitvoeren.

Welke functies heeft Ty­pe­Script?

We­bont­wik­ke­ling heeft de afgelopen jaren aan­zien­lij­ke voor­uit­gang geboekt en Ty­pe­Script is naar voren gekomen als een uiterst efficiënt al­ter­na­tief voor Ja­vaScript. Hieronder hebben we de be­lang­rijk­ste kenmerken van deze taal sa­men­ge­vat.

Statische typering

Statische typering is een es­sen­ti­ë­le functie van Ty­pe­Script waarmee u ge­ge­vens­ty­pen kunt spe­ci­fi­ce­ren voor va­ri­a­be­len, pa­ra­me­ters, functies en andere elementen in uw code. In te­gen­stel­ling tot dy­na­mi­sche typering in Ja­vaScript, waarbij ge­ge­vens­ty­pen tijdens de uit­voe­ring worden bepaald, worden ge­ge­vens­ty­pen in Ty­pe­Script tijdens de ont­wik­ke­ling toe­ge­we­zen, voordat de code wordt uit­ge­voerd. Deze methode helpt om fouten en logische problemen in een vroeg stadium op te sporen.

function add(a: number, b: number): number {
    return a + b;
}
const result = add(5, 3); // valid
const result = add(5, "3"); // Type Error
ty­pe­script

In dit voorbeeld hebben we statische typering gebruikt voor de functie add. De twee pa­ra­me­ters a en b worden ge­de­cla­reerd als getallen (number) en de functie re­tour­neert een waarde van het type number. Elke poging om deze functie te gebruiken met een ander ge­ge­vens­ty­pe zal ervoor zorgen dat Ty­pe­Script dit als een fout iden­ti­fi­ceert.

Optioneel typen

Met optionele typering kunt u ge­ge­vens­ty­pen voor bepaalde va­ri­a­be­len en pa­ra­me­ters spe­ci­fi­ce­ren, terwijl u andere va­ri­a­be­len en pa­ra­me­ters zonder ge­de­fi­ni­eerd ge­ge­vens­ty­pe laat.

function sayHello(name: string, age: any): string {
    if (age) {
        return `Hello, ${name}, you are ${age} years old.`;
    } else {
        return `Hello, ${name}.`;
    }
}
ty­pe­script

De functie sayHello wordt ge­de­fi­ni­eerd met de pa­ra­me­ters name en age. De aan­dui­ding any geeft aan dat de parameter age elk ge­ge­vens­ty­pe kan zijn.

ES6+-functies

Ty­pe­Script on­der­steunt moderne Ja­vaScript-functies, waaronder ES6 en nieuwere functies zoals pijl­func­ties en sja­bloon­strings.

const multiply = (a: number, b: number): number => a * b;
const greeting = (name: string) => `Hello, ${name}!`;
ty­pe­script

De pijl­func­ties leiden tot een kortere en be­knop­te­re syntaxis.

Code-or­ga­ni­sa­tie

Ty­pe­Script biedt een betere or­ga­ni­sa­tie van de code en zorgt ervoor dat de code wordt opgedeeld in her­bruik­ba­re delen. Dit wordt mogelijk gemaakt door modules en naam­ruim­ten.

// Math.ts
export function add(a: number, b: number): number {
    return a + b;
}
// Main.ts
import { add } from './Math';
const result = add(5, 3);
ty­pe­script

Hier laten we zien hoe je code met modules kunt struc­tu­re­ren en import en export kunt gebruiken voor or­ga­ni­sa­tie. De functie add wordt ge­de­fi­ni­eerd in een aparte module met de naam Math.ts en ver­vol­gens ge­ïm­por­teerd en ge­ïn­te­greerd in een andere module, Main.ts.

Ob­ject­ge­o­ri­ën­teerd pro­gram­me­ren (OOP)

Ty­pe­Script ver­ge­mak­ke­lijkt ob­ject­ge­o­ri­ën­teerd pro­gram­me­ren door middel van Ty­pe­Script-klassen, in­ter­fa­ces en over­er­ving:

class Person {
    constructor(public name: string, public age: number) {}
    greet() {
        console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
    }
}
const person = new Person("Alice", 30);
person.greet();
ty­pe­script

Dit voorbeeld toont het gebruik van klassen en ob­ject­ge­o­ri­ën­teerd pro­gram­me­ren (OOP) in Ty­pe­Script. De klasse Person heeft de ei­gen­schap­pen name, age en een methode greet, die wordt gebruikt om de persoon voor te stellen en in­for­ma­tie over hem of haar te ver­strek­ken.

Uit­ge­breid ty­pe­sys­teem

Het Ty­pe­Script-ty­pe­sys­teem is flexibel en uit­ge­breid. U kunt door de gebruiker ge­de­fi­ni­eer­de types en in­ter­fa­ces maken en zelfs bestaande types uit­brei­den.

interface Animal {
    name: string;
}
 
interface Dog extends Animal {
    breed: string;
}
const myDog: Dog = { name: "Buddy", breed: "Labrador" };
ty­pe­script

De interface Animal de­fi­ni­eert een ei­gen­schap name, terwijl de interface Dog erft van Animal en een extra ei­gen­schap breed toevoegt. Het object myDog heeft de kenmerken van beide in­ter­fa­ces.

Com­pa­ti­bi­li­teit met Ja­vaScript

Ty­pe­Script is com­pa­ti­bel met Ja­vaScript, waardoor het in elke Ja­vaScript-omgeving kan worden uit­ge­voerd. Deze com­pa­ti­bi­li­teit maakt het ge­mak­ke­lij­ker om Ty­pe­Script ge­lei­de­lijk in bestaande Ja­vaScript-projecten te in­te­gre­ren.

// JavaScript-Code
function greet(name) {
    return "Hello, " + name;
}
// TypeScript-Code
function greet(name: string): string {
    return "Hello, " + name;
}
ty­pe­script

De bo­ven­staan­de Ja­vaScript-code (zonder ty­pi­fi­ca­tie) kan zonder problemen worden gebruikt in een Ty­pe­Script-code (met ty­pi­fi­ca­tie).

Wat zijn de voor- en nadelen van Ty­pe­Script?

Hoewel Ty­pe­Script een aantal voordelen biedt, heeft het ook enkele nadelen. Hier volgt een overzicht:

Voordelen

Ty­pe­Script heeft een uit­ge­breid eco­sys­teem van ty­pe­de­fi­ni­ties voor veel Ja­vaScript-bi­bli­o­the­ken en -fra­me­works. Hierdoor verloopt de in­te­gra­tie van code van derden in Ty­pe­Script-projecten naadloos en eenvoudig. Dit is handig in de huidige wereld van web­ge­ba­seer­de ap­pli­ca­ties, die vaak af­han­ke­lijk zijn van meerdere bi­bli­o­the­ken en fra­me­works.

Naast statische typering biedt Ty­pe­Script een schat aan ont­wik­ke­lings­func­ties, waaronder in­ter­fa­ces, klassen, modules en on­der­steu­ning voor de huidige EC­MAScript-stan­daar­den. Deze functies ver­be­te­ren de struc­tu­re­ring van de code, ver­ge­mak­ke­lij­ken het onderhoud en de schaal­baar­heid van projecten en be­vor­de­ren de pro­duc­ti­vi­teit bij de ont­wik­ke­ling. Veel ge­ïn­te­greer­de ont­wik­kelom­ge­vin­gen (IDE’s), zoals Visual Studio Code, bieden uit­ste­ken­de on­der­steu­ning voor Ty­pe­Script.

Nadelen

Het kost tijd om aan Ty­pe­Script te wennen, vooral voor ont­wik­ke­laars die voorheen alleen met Ja­vaScript hebben gewerkt. Ty­pe­Script-code moet eerst in Ja­vaScript worden ge­com­pi­leerd voordat deze in browsers of Node.js-om­ge­vin­gen kan worden uit­ge­voerd. Dit zorgt voor een extra stap in het ont­wik­ke­lings­pro­ces.

Bij kleinere projecten kan Ty­pe­Script als te complex worden ervaren, omdat de voordelen van ty­pe­vei­lig­heid misschien niet zo duidelijk zijn. Ty­pe­Script-projecten kunnen meer middelen vereisen vanwege extra type-in­for­ma­tie en com­pi­la­tie­stap­pen.

Wat zijn enkele al­ter­na­tie­ven voor Ty­pe­Script?

Er zijn ver­schil­len­de web­pro­gram­meer­ta­len die een goed al­ter­na­tief kunnen zijn voor Ty­pe­Script, af­han­ke­lijk van de spe­ci­fie­ke vereisten van een project en de voorkeur van de ont­wik­ke­laar(s).

  • Flow: Flow is een statische ty­pe­chec­ker voor Ja­vaScript die is ont­wik­keld door Facebook. Hiermee kunt u typen toevoegen aan Ja­vaScript-code zonder volledig over te stappen op Ty­pe­Script. Flow is een goede keuze als u typen ge­lei­de­lijk wilt in­te­gre­ren in uw Ja­vaScript-projecten.
  • Dart: dit is een door Google ont­wik­kel­de pro­gram­meer­taal die kan worden gebruikt om we­bap­pli­ca­ties en mobiele apps te maken. Het biedt ty­pe­vei­lig­heid en goede pres­ta­ties. Dart wordt vaak gebruikt in com­bi­na­tie met het Flutter-framework voor de ont­wik­ke­ling van mobiele apps.
  • Pu­re­Script: Pu­re­Script is een sterk ge­ty­peer­de func­ti­o­ne­le pro­gram­meer­taal die sterke ty­pe­vei­lig­heid en een puur func­ti­o­ne­le pro­gram­meer­stijl biedt. Het maakt het mogelijk om Ja­vaScript-bi­bli­o­the­ken te im­por­te­ren.
  • Elm: Elm is een func­ti­o­ne­le, sterk ge­ty­peer­de taal die is ontworpen voor de ont­wik­ke­ling van web­bap­pli­ca­ties. Elm promoot het principe van Elm Ar­chi­tec­tu­re en heeft een hoge mate van ty­pe­vei­lig­heid.
  • ReasonML (Buckle­Script): deze taal is ont­wik­keld door Facebook en is gebaseerd op OCaml. Buckle­Script is een compiler die ReasonML com­pi­leert naar Ja­vaScript. Het biedt ook ty­pe­vei­lig­heid en is eenvoudig te in­te­gre­ren met React voor frontend-ont­wik­ke­ling.
Tip

In andere artikelen in onze digitale gids gaan we dieper in op andere on­der­wer­pen, zoals Ty­pe­Script-functies en Ty­pe­Script-arrays.

Ga naar hoofdmenu