Type Assertions
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy — Lektion 68 von 73.
Manchmal verfügt TypeScript nicht über genügend Informationen, um den genauen Typ eines Wertes zu bestimmen, aber Sie als Entwickler wissen mehr darüber, was dieser Wert tatsächlich ist. Type Assertions ermöglichen es Ihnen, TypeScript mitzuteilen: „Vertrau mir, ich weiß, dass dieser Wert von diesem spezifischen Typ ist.“
TypeScript bietet zwei Syntax-Varianten für Typzusicherungen (Type Assertions). Die as-Syntax ist der gängigere Ansatz:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Sie können auch die Syntax mit spitzen Klammern verwenden, obwohl diese in modernem TypeScript seltener vorkommt:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachErstellen Sie eine Funktion, die Daten aus einer externen API-Simulation verarbeitet. Sie arbeiten mit Werten vom Typ unknown und verwenden Typzusicherungen (Type Assertions), um sicher auf deren Eigenschaften zuzugreifen.
Erstellen Sie eine Variable apiResponse vom Typ unknown und weisen Sie ihr den folgenden JSON-String zu:
{"userId": 42, "username": "alice_dev", "isActive": true}Erstellen Sie eine Funktion namens processUserData, die:
- Einen Parameter
datavom Typunknownentgegennimmt - Eine Typzusicherung verwendet, um
dataalsstringzu behandeln - Den JSON-String mit
JSON.parse()parst - Eine weitere Typzusicherung verwendet, um das geparste 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
Erstellen Sie zusätzliche Testdaten:
- Erstellen Sie
secondApiResponsevom Typunknownmit dem JSON-String:{"userId": 15, "username": "bob_admin", "isActive": false} - Erstellen Sie
thirdApiResponsevom Typunknownmit dem JSON-String:{"userId": 99, "username": "charlie_user", "isActive": true}
Testen Sie Ihre Funktion und geben Sie die folgenden Ausgaben aus:
- Rufen Sie
processUserDatamitapiResponseauf und geben Sie das Ergebnis aus - Rufen Sie
processUserDatamitsecondApiResponseauf und geben Sie das Ergebnis aus - Rufen Sie
processUserDatamitthirdApiResponseauf und geben Sie das Ergebnis aus
Spickzettel
Type-Assertions ermöglichen es Ihnen, TypeScript den spezifischen Typ eines Wertes mitzuteilen, wenn Sie mehr wissen, als TypeScript ableiten kann.
Verwenden Sie die as-Syntax (am gebräuchlichsten):
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Alternative Syntax mit spitzen Klammern:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;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 hier die Funktion processUserData
// 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