Heeft u ooit discriminante unies en type guards gebruikt? Welke ingebouwde type guards kent u?
sobes.tech AI
Antwoord van AI
Discriminated unions (discriminated unions) en type guards (type guards) zijn krachtige tools van TypeScript voor het werken met unietypen, waarmee je veilig een specifiek type binnen de unie kunt bepalen.
Discriminated unions zijn unietypen waarbij elk type een gemeenschappelijke letterlijke sleutel heeft (bijvoorbeeld het veld type), waarmee je een specifiek type eenduidig kunt identificeren.
Type guards zijn functies of constructies die het type van een variabele tijdens runtime controleren en het type voor de compiler beperken.
Ingebouwde type guards in TypeScript:
typeof— voor primitieve types (string,number,boolean)instanceof— om te controleren of een object tot een klasse behoortin— om te controleren of een eigenschap in een object bestaat
Voorbeeld van een discriminated union en een type guard:
interface Vierkant {
kind: 'square';
size: number;
}
interface Cirkel {
kind: 'circle';
radius: number;
}
type Vormen = Vierkant | Cirkel;
function oppervlakte(vorm: Vormen): number {
switch (vorm.kind) {
case 'square':
return vorm.size * vorm.size;
case 'circle':
return Math.PI * vorm.radius ** 2;
}
}
Hier is kind de discriminant, en switch fungeert als een type guard.
Gebruik van ingebouwde type guards:
function isString(waarde: unknown): waarde is string {
return typeof waarde === 'string';
}
if (isString(iets)) {
// hier is `iets` van type string
}