// Funktionsprogrammierung in TypeScript - Kata Starter-Datei

/**
 * 1️. Definiere eine Schnittstelle "Entity", die eine ID enthält.
 */

/**
 * 2️. Erstelle die Interfaces "User" und "Product", die "Entity" erweitern.
 *    - "User" soll "firstName", "age" und "role" enthalten.
 *    - "Product" soll "title" und "price" enthalten.
 */

/**
 * 3️. Implementiere eine generische "fetchData" Funktion.
 *    - Sie soll Daten aus einer API abrufen und einen bestimmten Schlüssel extrahieren.
 *    - Fehler sollen behandelt werden.
 */
const fetchData = async (apiUrl, key) => {
  // Implementiere diese Funktion
};

/**
 * 4️. Erstelle eine generische Klasse "DataStore<T>", um Daten zu speichern und zu verwalten.
 *    - Implementiere eine Methode "save", die Daten als Key-Value-Map speichert.
 *    - Implementiere eine Methode "filterBy", die Daten nach einer Bedingung filtert.
 */
class DataStore {
  // Implementiere diese Klasse
}

// Nutzung der Klasse für verschiedene API-Daten
(async () => {
  // Erstelle zwei Instanzen von "DataStore" für "User" und "Product"
  // Rufe Benutzerdaten und Produktdaten ab
  // Speichere die Daten
  // Filtere nach bestimmten Bedingungen (z. B. nach Rolle oder Preis)
})();
