Recap: Typen verfeinern
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 73 von 73.
Aufgabe
EinfachErstelle 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:
configvom TypAppConfigundkeyvom Typstring "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
stringhat
Erstelle eine Funktion namens getConfigAsString, die:
- Zwei Parameter entgegennimmt:
configvom TypAppConfigundkeyvom Typstring "undefined"zurückgibt, wenn der Schlüssel nicht vorhanden ist- Eine Typzusicherung verwendet, um den Wert als
stringzu behandeln, und ihn zurückgibt, wenn der Wert vorhanden ist - Einen expliziten Rückgabetyp
stringhat
Erstelle eine Funktion namens processConfig, die:
- Zwei Parameter entgegennimmt:
configvom TypAppConfigundkeyvom Typstring validateConfigValueverwendet, 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
nullzurückgibt, wenn der Schlüssel fehlt- Einen expliziten Rückgabetyp
string | number | boolean | nullhat
Erstelle Testdaten:
- Erstelle
settingsvom TypAppConfigmit:"appName":"MyApp""version":2.1"debugMode":true"maxUsers":100"theme":"dark"
Teste deine Funktionen und gib die folgenden Ausgaben aus:
- Rufe
validateConfigValuemitsettingsund"appName"auf - Rufe
validateConfigValuemitsettingsund"version"auf - Rufe
validateConfigValuemitsettingsund"debugMode"auf - Rufe
validateConfigValuemitsettingsund"timeout"auf - Rufe
getConfigAsStringmitsettingsund"theme"auf - Rufe
getConfigAsStringmitsettingsund"missing"auf - Rufe
processConfigmitsettingsund"appName"auf - Rufe
processConfigmitsettingsund"maxUsers"auf - Rufe
processConfigmitsettingsund"debugMode"auf - Rufe
processConfigmitsettingsund"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
1Erste Schritte mit TS
Was ist TypeScript?Warum TypeScript verwenden?Dein erster TypeScript-CodeKompilierungsprozess & FehlerZusammenfassung: Einführung in TS4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von Arrow-FunktionenDer Rückgabetyp 'void'Optionale Parameter mit '?'Standard-ParameterwerteTypisierung von Rest-ParameternDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen erstellen2Basis-Typen
Basis-Typen: str, num, booleanDer 'any'-Typ: Der NotausgangDer 'unknown'-TypArbeiten mit 'null' & 'undef'Typinferenz in der PraxisExplizite Typ-AnnotationenZusammenfassung: Übung zu Basis-Typen5Typen: Aliase, Unions & Intersections
Typ-Aliase für primitive DatentypenUnion-Typen ('|')Arbeiten mit Union-TypenLiteral-TypenIntersection-Typen ('&')Kombinieren von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen8Enums
Was ist ein numerisches Enum?Numerische Enums verwendenWas ist ein String-Enum?String-Enums verwendenHeterogene EnumsZusammenfassung: Enums verwenden11Fortgeschrittene Themen
Type AssertionsType Guards: in & instanceofDer 'never'-TypNullable Types ('strictNull')Index-Signaturen für ObjekteRecap: Typen verfeinern3Datenstruktur: Arrays & Tupel
Typisierte Arrays'readonly'-Modifikator für ArraysWas ist ein Tupel?Deklarieren von und Zugriff auf TupelDestrukturierung von TupelnReadonly-TupelMehrdimensionale typisierte ArraysSpread-Operator mit ArraysZusammenfassung: Arrays und TupelÜbe selbstständig: TypeScript-Playground