Wat is TypeScript?

TypeScript is een programmeertaal uit de stal van Microsoft en is bedacht door dezelfde man achter C# Anders Hejsberg.

TypeScript geeft JavaScript syntax om types de definieren. Plus een type checker om deze types te forceren.

Hoe werken types?

Met types bedoelen we de vorm van de inhoud van een variabele. Types kunenn zijn: string, boolean, number of combinatie daarvan in een object.

Wanneer een statische programmeertaal types heeft dan forceert de programmeertaal dat op elk punt bekend is wat voor type een variabele heeft.

Neem het volgende voorbeeld in JavaScript:

let a = 10;
a = 'test';

JavaScript maakt het niet uit dat de a van een number in een string veranderd. In TypeScript krijgen we deze error:

Type 'string' is not assignable to type 'number'.

In TypeScript is het ook mogelijk om zelf types te definiëren, neem een Pokemon als voorbeeld:

type Pokemon = {
  id: number;
  name: string;
  description: string;
  weight: number;
  height: number;
  sprites: {
    front: string;
    back: string;
  };
};

const pokemon: Pokemon = {
  id: 1,
  name: 'Bulbasaur',
  description:
    'A strange seed was planted on its back at birth.',
  weight: 69,
  height: 7,
  sprites: {
    front: '/public/sprites/1-front.png',
    back: '/public/sprites/1-back.png',
  },
};

Door statische type analyze weet je ten alle tijden welke vorm een variable heeft. Dit maakt het onderhouden van applicaties vele malen makkelijker!

Is TypeScript het waard?

Een volmondig ja! Het toevoegen van allerlei types lijkt wanneer je vanuit een minder stricte taal zoals: Ruby, JavaScript, PHP of Python komt misschien overkill.

Maar wat je er voor terug krijgt is heel veel in termen van Developer Experience (DX). Via static types snapt jouw code editor jouw code veel beter. Dit geeft je:

  • Autocomplete: krachtige autocomplete, scheelt weer type werk!

  • Krachtige refactoring tools: rename variable, move to file, auto import, etc etc.

  • Jump / hover voor definitions: klik of hover met je muis om te zien waar de code vandaan komt, en wat de definities zijn!

Voorbeeld van autocomplete in een editor. De gebruiker typed pokemon. en de editor geeft autocomplete hints voor description, height, id, name, sprites en weight.

Eigenlijk is het hebben van een type checker leuk, maar je blijft voor de verbetering in de DX

Hoe verhoudt TypeScript zich tegenover JavaScript?

TypeScript is een superset van JavaScript. Wanneer een programmeertaal een superset is van een andere programmeer taal dan betekent dit het volgende: alle geldige code in de subset is geldige code in de superset, maar niet andersom.

In andere woorden: alle geldige JavaScript is geldige TypeScript, maar niet alle TypeScript is geldige JavaScript.

Concreet betekent dit dat kennis van JavaScript nodig is voor TypeScript. Maar ook dat al je bestaande JavaScript code goed te herbruiken in TypeScript.

Wat maakt TypeScript lastig?

De makers van TypeScript zijn echte computer scientist en programming language afficionados. Ze gebruiken allerlei termen zoals: bivariance, covariance, interference, generics, unions, intersections en de lijst gaat zo nog wel even door.

Soms kan TypeScript hierdoor voelen als hogere wiskunde. Wat ik wel altijd zeg is dat het voor ons als stervelingen (lees gebruikers van TypeScript en libraries) het allemaal wel meevalt.

Pas op het moment dat je complexe herbruikbare libraries gaat maken komt dit allemaal pas om te hoek kijken. TypeScript is dus vooral moeilijk voor library / framework makers, en makkelijk voor library / framework gebruikers.

Wat vindt Maarten?

Een foto van Maarten, een gemiddeld gezicht al zeg ik het zelf.

TypeScript is echt een gamechanger! In het verleden heb ik meerdere grote JavaScript applicaties gemaakt en daarna vooral onderhouden!

Het onderhouden is waar de pijn in JavaScript echt begint. Je ziet een woud aan functies die allerlei argumenten accepteren en dingen uit de back-end halen. Maar wat zijn precies die argumenten en dingen?

Na een maand of twee zakt alles weg... het resultaat code waarvan je niet helemaal zeker weet wat het doet. Type definities helpen enorm om te begrijpen wat je in je handen hebt. Ik kan persoonlijk niet meer terug!

Contact

Neem contact op via e-mail, phone of app, als je vragen hebt of een offerte wilt aanvragen.

Vraag een offerte aan Boek kennismakingsgesprek