Menu
CoddyTech

Recap: Typen verfeinern

Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 73 von 73.

challenge icon

Aufgabe

Einfach

Erstelle ein Konfigurationsverwaltungssystem, das dynamische Einstellungen mithilfe von Indexsignaturen, Typwächtern und Typzusicherungen verarbeitet.

Erstelle ein Interface namens AppConfig, das eine Indexsignatur verwendet, um Zeichenfolgenschlüssel Werten vom Typ string | number | boolean zuzuordnen.

Erstelle eine Funktion namens validateConfigValue, die:

  • Zwei Parameter entgegennimmt: config vom Typ AppConfig und key vom Typ string
  • "missing" zurückgibt, wenn der Schlüssel in der Konfiguration nicht vorhanden ist
  • Typwächter verwendet, um den tatsächlichen Typ des Werts zu überprüfen
  • "string" zurückgibt, wenn der Wert eine Zeichenfolge ist
  • "number" zurückgibt, wenn der Wert eine Zahl ist
  • "boolean" zurückgibt, wenn der Wert ein boolescher Wert ist
  • Einen expliziten Rückgabetyp string hat

Erstelle eine Funktion namens getConfigAsString, die:

  • Zwei Parameter entgegennimmt: config vom Typ AppConfig und key vom Typ string
  • "undefined" zurückgibt, wenn der Schlüssel nicht vorhanden ist
  • Eine Typzusicherung verwendet, um den Wert als string zu behandeln, und ihn zurückgibt, wenn der Wert vorhanden ist
  • Einen expliziten Rückgabetyp string hat

Erstelle eine Funktion namens processConfig, die:

  • Zwei Parameter entgegennimmt: config vom Typ AppConfig und key vom Typ string
  • validateConfigValue verwendet, um den Typ zu überprüfen
  • Den Wert in Großbuchstaben umgewandelt zurückgibt, wenn er eine Zeichenfolge ist
  • Den Wert mit 10 multipliziert zurückgibt, wenn er eine Zahl ist
  • Den entgegengesetzten booleschen Wert zurückgibt, wenn er ein boolescher Wert ist
  • null zurückgibt, wenn der Schlüssel fehlt
  • Einen expliziten Rückgabetyp string | number | boolean | null hat

Erstelle Testdaten:

  • Erstelle settings vom Typ AppConfig mit:
    • "appName": "MyApp"
    • "version": 2.1
    • "debugMode": true
    • "maxUsers": 100
    • "theme": "dark"

Teste deine Funktionen und gib die folgenden Ausgaben aus:

  • Rufe validateConfigValue mit settings und "appName" auf
  • Rufe validateConfigValue mit settings und "version" auf
  • Rufe validateConfigValue mit settings und "debugMode" auf
  • Rufe validateConfigValue mit settings und "timeout" auf
  • Rufe getConfigAsString mit settings und "theme" auf
  • Rufe getConfigAsString mit settings und "missing" auf
  • Rufe processConfig mit settings und "appName" auf
  • Rufe processConfig mit settings und "maxUsers" auf
  • Rufe processConfig mit settings und "debugMode" auf
  • Rufe processConfig mit settings und "invalid" auf

Probier es selbst

// TODO: Schreibe deinen Code hier

// Erstelle das AppConfig-Interface


// Erstelle die validateConfigValue-Funktion


// Erstelle die getConfigAsString-Funktion


// Erstelle die processConfig-Funktion


// Erstelle Testdaten - settings-Objekt


// Teste die Funktionen und gib die Ergebnisse aus
console.log(validateConfigValue(settings, "appName"));
console.log(validateConfigValue(settings, "version"));
console.log(validateConfigValue(settings, "debugMode"));
console.log(validateConfigValue(settings, "timeout"));
console.log(getConfigAsString(settings, "theme"));
console.log(getConfigAsString(settings, "missing"));
console.log(processConfig(settings, "appName"));
console.log(processConfig(settings, "maxUsers"));
console.log(processConfig(settings, "debugMode"));
console.log(processConfig(settings, "invalid"));

Alle Lektionen in Einführung in TypeScript

Übe selbstständig: TypeScript-Playground