Type Assertions
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 68 von 73.
Manchmal hat TypeScript nicht genügend Informationen, um den exakten Typ eines Werts zu bestimmen, aber du als Entwickler weißt mehr darüber, was dieser Wert tatsächlich ist. Mit Typassertionen kannst du TypeScript sagen: „Vertrau mir, ich weiß, dass dieser Wert von diesem spezifischen Typ ist.“
TypeScript bietet zwei Syntaxen für Typassertionen. Die as-Syntax ist der häufigere Ansatz:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Du kannst auch die Syntax mit spitzen Klammern verwenden, obwohl sie im modernen TypeScript weniger verbreitet ist:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Aufgabe
EinfachErstelle eine Funktion, die Daten aus einer Simulation einer externen API verarbeitet. Du arbeitest mit Werten vom Typ unknown und verwendest Typzusicherungen, um sicher auf deren Eigenschaften zuzugreifen.
Erstelle eine Variable apiResponse vom Typ unknown und weise ihr den folgenden JSON-String zu:
{"userId": 42, "username": "alice_dev", "isActive": true}Erstelle eine Funktion namens processUserData, die:
- Einen Parameter
datavom Typunknownentgegennimmt - Eine Typzusicherung verwendet, um
dataalsstringzu behandeln - Den JSON-String mithilfe von
JSON.parse()analysiert - Eine weitere Typzusicherung verwendet, um das analysierte Ergebnis als ein Objekt mit den Eigenschaften
userId(number),username(string) undisActive(boolean) zu behandeln - Einen formatierten String zurückgibt:
"User [userId]: [username] (Active: [isActive])" - Einen expliziten Rückgabetyp
stringhat
Erstelle zusätzliche Testdaten:
- Erstelle
secondApiResponsevom Typunknownmit dem JSON-String:{"userId": 15, "username": "bob_admin", "isActive": false} - Erstelle
thirdApiResponsevom Typunknownmit dem JSON-String:{"userId": 99, "username": "charlie_user", "isActive": true}
Teste deine Funktion und gib die folgenden Ausgaben aus:
- Rufe
processUserDatamitapiResponseauf und gib das Ergebnis aus - Rufe
processUserDatamitsecondApiResponseauf und gib das Ergebnis aus - Rufe
processUserDatamitthirdApiResponseauf und gib das Ergebnis aus
Probier es selbst
// Erstelle die API-Antwortvariablen
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: Erstelle die processUserData-Funktion hier
// Teste die Funktion und gib die Ergebnisse aus
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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: Online-JavaScript-Compiler