From 864b3f27d95f72a496eb8b02484c0f821b410b6f Mon Sep 17 00:00:00 2001 From: Philippe Torrel Date: Fri, 16 Oct 2026 14:47:08 +0200 Subject: [PATCH] --- .../uebungen/u11_literals/index.html | 25 +++++++++++++++ .../uebungen/u11_literals/package.json | 16 ++++++++++ .../uebungen/u11_literals/src/main.ts | 30 ++++++++++++++++++ ...gen-04-10-ts.zip => uebungen-04-09-ts.zip} | Bin 17409 -> 14306 bytes 05_typescript/uebungen/uebungen-10-11-ts.zip | Bin 0 -> 5681 bytes 5 files changed, 71 insertions(+) create mode 100644 05_typescript/uebungen/u11_literals/index.html create mode 100644 05_typescript/uebungen/u11_literals/package.json create mode 100644 05_typescript/uebungen/u11_literals/src/main.ts rename 05_typescript/uebungen/{uebungen-04-10-ts.zip => uebungen-04-09-ts.zip} (61%) create mode 100644 05_typescript/uebungen/uebungen-10-11-ts.zip diff --git a/05_typescript/uebungen/u11_literals/index.html b/05_typescript/uebungen/u11_literals/index.html new file mode 100644 index 0000000..9bb81a6 --- /dev/null +++ b/05_typescript/uebungen/u11_literals/index.html @@ -0,0 +1,25 @@ + + + + + + Übung 11: Arbeiten mit Literal Types in TypeScript + + + + +
+
+
+

Übung 11: Arbeiten mit Literal Types in TypeScript

+

+ In dieser Übung übst du die Verwendung von Literal Types in TypeScript, um spezifischere und kontrollierte + Typen für deine Variablen und Funktionsparameter zu erstellen. Du wirst Funktionen definieren, die bestimmte + String-, numerische und boolesche Literal Types akzeptieren und sicherstellen, dass nur die erlaubten Werte + an diese Funktionen übergeben werden können. +

+
+
+
+ + diff --git a/05_typescript/uebungen/u11_literals/package.json b/05_typescript/uebungen/u11_literals/package.json new file mode 100644 index 0000000..285e9ca --- /dev/null +++ b/05_typescript/uebungen/u11_literals/package.json @@ -0,0 +1,16 @@ +{ + "name": "11_literals", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "ts": "npx esbuild src/main.ts --watch --bundle --outfile=assets/js/bundle.js --loader:.ts=ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "devDependencies": { + "esbuild": "^0.28.2" + } +} diff --git a/05_typescript/uebungen/u11_literals/src/main.ts b/05_typescript/uebungen/u11_literals/src/main.ts new file mode 100644 index 0000000..468d4b5 --- /dev/null +++ b/05_typescript/uebungen/u11_literals/src/main.ts @@ -0,0 +1,30 @@ +// [ ] Step 1: Create a function 'setStatus' that accepts a string literal type parameter 'status'. +// - The 'status' can only be "success", "error", or "loading". +// - The function should log the status to the console. + +// [ ] Step 2: Create a function 'rateExperience' that accepts a numeric literal type parameter 'rating'. +// - The 'rating' can only be 1, 2, 3, 4, or 5. +// - The function should return a message indicating the rating. + +// [ ] Step 3: Create a function 'togglePower' that accepts a boolean literal type parameter 'state'. +// - The 'state' can only be true or false. +// - The function should return a message indicating whether the power is ON or OFF. + +// [ ] Step 4: Test the functions with valid and invalid values to ensure the correct behavior and type safety. + +// Test cases (students should verify that these work as expected) + +// Test 'setStatus' function +setStatus('success'); // OK +setStatus('error'); // OK +setStatus('complete'); // Error: Argument of type '"complete"' is not assignable to parameter of type '"success" | "error" | "loading"'. + +// Test 'rateExperience' function +console.log(rateExperience(5)); // => "You rated the experience as 5" +console.log(rateExperience(3)); // => "You rated the experience as 3" +console.log(rateExperience(6)); // Error: Argument of type '6' is not assignable to parameter of type '1 | 2 | 3 | 4 | 5'. + +// Test 'togglePower' function +console.log(togglePower(true)); // => "Power is ON" +console.log(togglePower(false)); // => "Power is OFF" +console.log(togglePower('on')); // Error: Argument of type '"on"' is not assignable to parameter of type 'true | false'. diff --git a/05_typescript/uebungen/uebungen-04-10-ts.zip b/05_typescript/uebungen/uebungen-04-09-ts.zip similarity index 61% rename from 05_typescript/uebungen/uebungen-04-10-ts.zip rename to 05_typescript/uebungen/uebungen-04-09-ts.zip index a4a7de56f25c9061cef9c54e6b9ae835434edb13..ac11f92bacd1de0ba47b3f728802a12176dc0d28 100644 GIT binary patch delta 368 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 literal 0 HcmV?d00001