Sobes.tech
Middle

/** * Taak 1: Generics en Toegankelijkheid van Sleutels * Maak een functie `getProperty` die een object en een sleutel neemt. * Gebruik generics om te zorgen dat de functie typeveilig is en dat de sleutel op het object bestaat. */ function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } getProperty('str', 'toString') /** * Taak 2: Gegeven meerdere Todo-interfaceverklaringen hieronder, leg uit wat er gebeurt wanneer ze in hetzelfde bereik aanwezig zijn. * Bespreek hoe TypeScript ze behandelt en vul het `myTodo`-object in om te voldoen aan de samengevoegde Todo-interface-eisen. */ interface Todo { title: string; dueDate: Date; } interface Todo { description: string; completed: boolean; }

sobes.tech AI

Antwoord van AI

Oefening 1: De functie getProperty gebruikt generics en de beperking K extends keyof T om te garanderen dat de sleutel key bestaat in het object obj van type T. Dit zorgt voor type-veilige toegang tot de eigenschappen van het object.

Voorbeeld van een functie:

function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const result = getProperty({name: 'Alice', age: 30}, 'name'); // type string

De aanroep getProperty('str', 'toString') is correct, omdat strings de methode toString hebben.


Oefening 2: In TypeScript worden meerdere declaraties van een interface met dezelfde naam in hetzelfde bereik samengevoegd (merged). Dit betekent dat de uiteindelijke interface Todo alle eigenschappen van beide declaraties bevat:

interface Todo {
  title: string;
  dueDate: Date;
  description: string;
  completed: boolean;
}

Om ervoor te zorgen dat het object myTodo overeenkomt met de samengevoegde interface, moet het al deze eigenschappen definiëren:

const myTodo: Todo = {
  title: 'Learn TypeScript',
  dueDate: new Date('2024-12-31'),
  description: 'Studie geavanceerde TypeScript-functies',
  completed: false
};

Op deze manier kunnen interface-declaraties in TypeScript worden uitgebreid door herhaalde declaraties, wat handig is om eigenschappen stapsgewijs toe te voegen.

/** * Taak 1: Generics en Toegankelijkheid van… - sobes.tech