ProgrammatieFullstack ontwikkelaar / Frontend ontwikkelaar

Hoe werkt de typisering van callbacks in TypeScript en wat moet worden overwogen bij het typeren van parameters en retourwaarden van callbacks?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord

In TypeScript is het aan te raden om de types voor callback-functies duidelijk te beschrijven. Het definiëren van de types van parameters en retourwaarden helpt om fouten te voorkomen:

type Callback = (event: string, id: number) => boolean; function useCallback(cb: Callback) { // ... }
  • Alle parameters en retourwaarden moeten expliciet worden getypeerd.
  • Als een functie void kan retourneren (niets retourneert) moet dit worden aangegeven: () => void.
  • Closures, this en overbelastingen moeten ook in aanmerking worden genomen bij het typen.
  • Als een functie met een callback betrokken is bij externe interacties (bijvoorbeeld React/Node.js), moeten de types overeenkomen met externe declaraties.

Vragenn met een addertje onder het gras

Is het noodzakelijk om de types van parameters en retourwaarden aan te geven in de definitie van een callback-functie, als TypeScript ze automatisch kan afleiden?

Antwoord: Niet noodzakelijk, TypeScript kan de types van callback-argumenten afleiden, maar voor publieke API's en complexe samengestelde functies is het uiterst wenselijk om alle types expliciet aan te geven. Dit vergemakkelijkt het onderhoud en voorkomt ongewenste fouten bij het wijzigen van functiese contracten.

Voorbeelden van echte fouten door onwetendheid over de nuances van het onderwerp


Verhaal

In een project werd een callback gebruikt zonder expliciete typisering van de retourwaarde, en een van de ontwikkelaars begon een string te retourneren in plaats van de verwachte boolean. Dit veroorzaakte geen fout tijdens de compilatie vanwege de standaard any, maar de logica van de functie werkte niet meer, wat leidde tot een bug in productie.


Verhaal

In een groot React-project was het vergeten om parameters van event-callbacks expliciet te typeren. Bij de overstap naar een nieuwe versie van React veranderden de types van evenementen, en de code begon te compileren met fouten. Het was noodzakelijk om de callback-functie op alle pagina's urgent te corrigeren.


Verhaal

In een Node.js-applicatie was de callback voor het werken met een asynchrone functie niet getypeerd: de verkregen waarde werd ten onrechte geïnterpreteerd als een string, terwijl het een error-object was. Het verschil in types leidde tot het onvermogen om fouten correct te verwerken.