This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
(() => {
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var require_main = __commonJS({
|
||||||
|
"src/main.ts"() {
|
||||||
|
function calculateDiscount(price, discount) {
|
||||||
|
return Number((price - discount).toFixed(2));
|
||||||
|
}
|
||||||
|
var finalPrice = calculateDiscount(100, 10);
|
||||||
|
console.log(`The final price is $${finalPrice}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
require_main();
|
||||||
|
})();
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 1: Erkennung von Typenfehlern</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<script src="assets/js/bundle.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 1: Erkennung von Typenfehlern</h1>
|
||||||
|
<p>
|
||||||
|
In dieser Übung übst du, Type Mismatches in TypeScript-Funktionen zu erkennen und aufzulösen. Dir wird eine
|
||||||
|
Funktion vorgelegt, die falsche Type Annotations hat. Deine Aufgabe ist es, die Probleme zu erkennen und die
|
||||||
|
Funktion so zu korrigieren, dass sie dem beabsichtigten Verhalten entspricht.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "01_erkennung-typenfehlern",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
function calculateDiscount(price: number, discount: string): number {
|
||||||
|
return price - parseFloat(discount);
|
||||||
|
}
|
||||||
|
|
||||||
|
const finalPrice = calculateDiscount(100, 10);
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
(() => {
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
var require_main = __commonJS({
|
||||||
|
"src/main.ts"() {
|
||||||
|
var user = {
|
||||||
|
name: "John Doe",
|
||||||
|
age: 30
|
||||||
|
};
|
||||||
|
console.log(user.email?.toLowerCase());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
require_main();
|
||||||
|
})();
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 2: User E-Mail</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<script src="assets/js/bundle.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 2: User E-Mail</h1>
|
||||||
|
<p>
|
||||||
|
In dieser Übung arbeitest du mit einem Objekt und stellst sicher, dass alle notwendigen Eigenschaften
|
||||||
|
vorhanden sind, bevor du auf sie zugreifst. Du nutzt Static Type-Checking von TypeScript, um undefinierte
|
||||||
|
Fehler beim Zugriff auf Objekteigenschaften zu vermeiden.
|
||||||
|
</p>
|
||||||
|
<ul class="list">
|
||||||
|
<li>
|
||||||
|
Ändere den Code, um einen Typ (<code>Interface</code>) einzuführen, der eine optionale E-Mail-Eigenschaft
|
||||||
|
enthält.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Verwende eine bedingte Anweisung für das Vorhandensein der E-Mail-Eigenschaft, bevor du versuchst, auf sie
|
||||||
|
zuzugreifen.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "02_user-email",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
const user = {
|
||||||
|
name: 'John Doe',
|
||||||
|
age: 30,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(user.email.toLowerCase());
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 3: Vehicle Interface</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<script src="assets/js/bundle.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 3: Vehicle Interface</h1>
|
||||||
|
<p>
|
||||||
|
In dieser Übung arbeitest du mit einem Interface Vehicle und einem Objekt myCar, um sicherzustellen, dass
|
||||||
|
beide mit den richtigen Methodensignaturen übereinstimmen. In Fällen, in denen Interface und Objekt nicht
|
||||||
|
übereinstimmen, musst du Anpassungen vornehmen.
|
||||||
|
</p>
|
||||||
|
<h4>Aufgaben:</h4>
|
||||||
|
<ol class="list">
|
||||||
|
<li>
|
||||||
|
Identifiziere alle Unstimmigkeiten zwischen dem Interface <code>Vehicle</code> und dem Objekt
|
||||||
|
<code>myCar</code>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Ändere das Interface <code>Vehicle</code>, das Objekt <code>myCar</code> oder beides, damit sie richtig
|
||||||
|
übereinstimmen.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Stelle sicher, dass die Funktion <code>operateVehicle</code> beide Methoden fehlerfrei aufrufen kann und
|
||||||
|
dass sie den Fahrzeugstatus korrekt zurückgibt.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<h4>Anweisungen:</h4>
|
||||||
|
<ul class="list">
|
||||||
|
<li>
|
||||||
|
Das Interface Vehicle umfasst zwei Methoden:
|
||||||
|
<ul class="list">
|
||||||
|
<li>
|
||||||
|
<code>startEngine</code>: Akzeptiert einen String-Parameter für den Schlüssel und gibt einen
|
||||||
|
booleschen Wert zurück, der angibt, ob der Motor erfolgreich gestartet wurde.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>drive</code>: Akzeptiert einen Zahlenparameter für die Geschwindigkeit und gibt einen String
|
||||||
|
zurück, der den Fahrstatus beschreibt.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Das Objekt <code>myCar</code> sollte beide Methoden korrekt implementieren, um das Interface Vehicle zu
|
||||||
|
entsprechen.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Ändere entweder das Interface <code>Vehicle</code> oder das Objekt <code>myCar</code> so, dass sie
|
||||||
|
übereinstimmen.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Stelle sicher, dass <code>operateVehicle</code> den Status des Fahrzeugs zurückgibt, nachdem du versucht
|
||||||
|
hast, den Motor zu starten und zu fahren.
|
||||||
|
</p>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "03_vehicle-interface",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
interface Vehicle {
|
||||||
|
startEngine: (key: string) => boolean;
|
||||||
|
drive: (speed: number) => string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const myCar = {
|
||||||
|
startEngine: () => {
|
||||||
|
console.log('Engine started');
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
drive: () => {
|
||||||
|
return 'Driving at default speed';
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
function operateVehicle(vehicle: Vehicle): string {
|
||||||
|
if (vehicle.startEngine('car-key')) {
|
||||||
|
return vehicle.drive(60);
|
||||||
|
} else {
|
||||||
|
return 'Engine failed to start.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(operateVehicle(myCar));
|
||||||
Binary file not shown.
@@ -4,5 +4,18 @@
|
|||||||
let calculateTotal = function(cart) {
|
let calculateTotal = function(cart) {
|
||||||
return cart.getTotal();
|
return cart.getTotal();
|
||||||
};
|
};
|
||||||
|
console.log(
|
||||||
|
calculateTotal({
|
||||||
|
getTotal: () => 42
|
||||||
|
})
|
||||||
|
);
|
||||||
|
const sum = (n1, n2) => {
|
||||||
|
return Number(n1) + Number(n2);
|
||||||
|
};
|
||||||
|
const sum2 = (n1, n2) => {
|
||||||
|
return Number(n1) + Number(n2);
|
||||||
|
};
|
||||||
|
console.log(sum(1, 2));
|
||||||
|
console.log(sum2(1, 2));
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
(() => {
|
||||||
|
// src/06_optional-exception.ts
|
||||||
|
{
|
||||||
|
const vehicle = {
|
||||||
|
make: "Toyota",
|
||||||
|
model: "Corolla",
|
||||||
|
// startEngine: () =>`${vehicle.make} engine startet`;
|
||||||
|
startEngine() {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const vehicle2 = {
|
||||||
|
make: "Citroen",
|
||||||
|
model: "AMI",
|
||||||
|
// startEngine: () =>`${vehicle.make} engine startet`;
|
||||||
|
startEngine() {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
},
|
||||||
|
stopEngine() {
|
||||||
|
return `${this.make} engine stoppt`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
console.log(vehicle.startEngine());
|
||||||
|
console.log(vehicle.stopEngine?.());
|
||||||
|
console.log(vehicle2.startEngine());
|
||||||
|
console.log(vehicle2.stopEngine?.());
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
(() => {
|
||||||
|
// src/07_static-type-check2.ts
|
||||||
|
{
|
||||||
|
let greetUser = function(name) {
|
||||||
|
const greeting = "Hello, " + name;
|
||||||
|
const timestamp = /* @__PURE__ */ new Date();
|
||||||
|
console.log(greeting);
|
||||||
|
};
|
||||||
|
const calculateArea = (radius, pi) => {
|
||||||
|
return radius * radius * parseFloat(pi);
|
||||||
|
};
|
||||||
|
calculateArea(10, "3.14");
|
||||||
|
greetUser("John Wick");
|
||||||
|
const dayOfWeek = (/* @__PURE__ */ new Date()).getDay();
|
||||||
|
let message = "";
|
||||||
|
if (dayOfWeek === 0 || dayOfWeek === 6) {
|
||||||
|
message = "It's a weekend!";
|
||||||
|
} else if (dayOfWeek === 2) {
|
||||||
|
message = "It's Tuesday!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})();
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
(() => {
|
||||||
|
// src/08_explicit-type-annotation.ts
|
||||||
|
{
|
||||||
|
let age = 23;
|
||||||
|
let message = "Welcome Text";
|
||||||
|
let toggle = true;
|
||||||
|
const logWelcome = (employee, hireDate) => {
|
||||||
|
console.log(`Welcome ${employee}, your hire date is ${hireDate.toDateString()}!`);
|
||||||
|
};
|
||||||
|
logWelcome("John Wick", /* @__PURE__ */ new Date("2024"));
|
||||||
|
console.log(/* @__PURE__ */ new Date());
|
||||||
|
console.log(/* @__PURE__ */ new Date("2025-07-19"));
|
||||||
|
const processEmployee2 = (employee) => {
|
||||||
|
console.log(
|
||||||
|
`${employee.name} started on ${employee.startDate.toDateString()} with a salary of $${employee.salary}.`
|
||||||
|
);
|
||||||
|
};
|
||||||
|
const processEmployee = (employee) => {
|
||||||
|
console.log(
|
||||||
|
`${employee.name} started on ${employee.startDate.toDateString()} with a salary of $${employee.salary}.`
|
||||||
|
);
|
||||||
|
};
|
||||||
|
processEmployee2({ name: "John Wick", startDate: /* @__PURE__ */ new Date(), salary: 95e3 });
|
||||||
|
processEmployee({ name: "John Wick", startDate: /* @__PURE__ */ new Date(), salary: 95e3 });
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -7,6 +7,13 @@
|
|||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
|
||||||
<script src="assets/js/01_interface-user.js" defer></script>
|
<script src="assets/js/01_interface-user.js" defer></script>
|
||||||
|
<script src="assets/js/02_unions.js" defer></script>
|
||||||
|
<script src="assets/js/03_generics.js" defer></script>
|
||||||
|
<script src="assets/js/04_static-type-checking.js" defer></script>
|
||||||
|
<script src="assets/js/05_type-definition-fn.js" defer></script>
|
||||||
|
<script src="assets/js/06_optional-exception.js" defer></script>
|
||||||
|
<script src="assets/js/07_static-type-check2.js" defer></script>
|
||||||
|
<script src="assets/js/08_explicit-type-annotation.js" defer></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<main>
|
||||||
|
|||||||
@@ -1,10 +1,33 @@
|
|||||||
// Type Definition für Funktionen
|
// Type Definition für Funktionen als Paramater
|
||||||
|
|
||||||
{
|
{
|
||||||
|
// Methoden Typ Syntax
|
||||||
interface ShoppingCart {
|
interface ShoppingCart {
|
||||||
|
// getTotal(): number;
|
||||||
getTotal: () => number;
|
getTotal: () => number;
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculateTotal(cart: ShoppingCart): number {
|
function calculateTotal(cart: ShoppingCart): number {
|
||||||
return cart.getTotal();
|
return cart.getTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
calculateTotal({
|
||||||
|
getTotal: () => 42,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Type Definition von Funktion
|
||||||
|
type SumFn = (a: number, b: number) => number;
|
||||||
|
|
||||||
|
const sum: SumFn = (n1, n2) => {
|
||||||
|
return Number(n1) + Number(n2);
|
||||||
|
};
|
||||||
|
|
||||||
|
const sum2 = (n1: number, n2: number): number => {
|
||||||
|
return Number(n1) + Number(n2);
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(sum(1, 2));
|
||||||
|
console.log(sum2(1, 2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
// Optional Exception Parameter in JS
|
||||||
|
{
|
||||||
|
const vehicle = {
|
||||||
|
make: 'Toyota',
|
||||||
|
model: 'Corolla',
|
||||||
|
|
||||||
|
startEngine: function () {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Methode - Kurzschreibweise ES6
|
||||||
|
startEngine2() {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
},
|
||||||
|
|
||||||
|
stopEngine: () => {
|
||||||
|
console.log(this); // => window (browser) | undefined (node)
|
||||||
|
return `${vehicle.make} engine gestoppt`;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(vehicle.startEngine()); // => 'Toyota engine startet'
|
||||||
|
console.log(vehicle.stopEngine()); // => 'Toyota engine startet'
|
||||||
|
|
||||||
|
const weather = [{ main: [{ icon: '10dn', description: 'Clouds' }] }];
|
||||||
|
|
||||||
|
console.log(weather[0]?.test[0]?.test);
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
// Optional Exception Parameter in JS
|
||||||
|
{
|
||||||
|
interface Vehicle {
|
||||||
|
make: string;
|
||||||
|
model: string;
|
||||||
|
startEngine: () => string;
|
||||||
|
stopEngine?: () => string; // ?: optional Property
|
||||||
|
}
|
||||||
|
|
||||||
|
const vehicle: Vehicle = {
|
||||||
|
make: 'Toyota',
|
||||||
|
model: 'Corolla',
|
||||||
|
// startEngine: () =>`${vehicle.make} engine startet`;
|
||||||
|
startEngine() {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const vehicle2: Vehicle = {
|
||||||
|
make: 'Citroen',
|
||||||
|
model: 'AMI',
|
||||||
|
// startEngine: () =>`${vehicle.make} engine startet`;
|
||||||
|
startEngine() {
|
||||||
|
return `${this.make} engine startet`;
|
||||||
|
},
|
||||||
|
stopEngine() {
|
||||||
|
return `${this.make} engine stoppt`;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(vehicle.startEngine()); // => Toyota engine startet
|
||||||
|
|
||||||
|
// Property Esception
|
||||||
|
console.log(vehicle.stopEngine?.()); // => undefined
|
||||||
|
|
||||||
|
// Cannot invoke an object which is possibly 'undefined'.
|
||||||
|
// console.log(vehicle.stopEngine()); // => undefined
|
||||||
|
|
||||||
|
console.log(vehicle2.startEngine()); // => Citroen engine startet
|
||||||
|
console.log(vehicle2.stopEngine?.()); // => Citroen engine stoppt
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
// static type checking - error linting Part II
|
||||||
|
{
|
||||||
|
const calculateArea = (radius: number, pi: string): number => {
|
||||||
|
return radius * radius * parseFloat(pi);
|
||||||
|
};
|
||||||
|
|
||||||
|
calculateArea(10, '3.14'); // 314
|
||||||
|
// Argument of type 'number' is not assignable to parameter of type 'string'.
|
||||||
|
//calculateArea(10, 3.14);
|
||||||
|
|
||||||
|
function greetUser(name: string): void {
|
||||||
|
const greeting = 'Hello, ' + name;
|
||||||
|
|
||||||
|
// 'timestamp' is declared but its value is never read.
|
||||||
|
const timestamp = new Date(); // Unused variable
|
||||||
|
|
||||||
|
console.log(greeting);
|
||||||
|
}
|
||||||
|
|
||||||
|
greetUser('John Wick');
|
||||||
|
|
||||||
|
// Logikfehler in bedingten Anweisungen
|
||||||
|
|
||||||
|
const dayOfWeek = new Date().getDay(); // number
|
||||||
|
|
||||||
|
let message = '';
|
||||||
|
|
||||||
|
if (dayOfWeek === 0 || dayOfWeek === 6) {
|
||||||
|
message = "It's a weekend!";
|
||||||
|
|
||||||
|
// This comparison appears to be unintentional because the types 'number' and 'string' have no overlap.
|
||||||
|
// } else if (dayOfWeek === 2 || dayOfWeek === 'Tuesday') {
|
||||||
|
// message = "It's Tuesday!";
|
||||||
|
} else if (dayOfWeek === 2) {
|
||||||
|
message = "It's Tuesday!";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// Explicit Type Annotations - In TypeScript hast du die Möglichkeit, die Typen von Variablen und Funktionsparametern explizit zu definieren.
|
||||||
|
{
|
||||||
|
let age: number = 23;
|
||||||
|
let message: string = 'Welcome Text';
|
||||||
|
let toggle: boolean = true;
|
||||||
|
|
||||||
|
// function logWelcome(employee: string, hireDate: Date) {
|
||||||
|
// console.log(`Welcome ${employee}, your hire date is ${hireDate.toDateString()}!`);
|
||||||
|
// }
|
||||||
|
|
||||||
|
const logWelcome = (employee: string, hireDate: Date) => {
|
||||||
|
console.log(`Welcome ${employee}, your hire date is ${hireDate.toDateString()}!`);
|
||||||
|
};
|
||||||
|
|
||||||
|
logWelcome('John Wick', new Date('2024')); // => Welcome John Wick, your hire date is Mon Jan 01 2024!
|
||||||
|
|
||||||
|
console.log(new Date());
|
||||||
|
console.log(new Date('2025-07-19')); // => 2025-07-19T00:00:00.000Z
|
||||||
|
|
||||||
|
// function processEmployee(employee: { name: string; startDate: Date; salary: number }) {
|
||||||
|
// console.log(
|
||||||
|
// `${employee.name} started on ${employee.startDate.toDateString()} with a salary of $${employee.salary}.`,
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
type Employee = { name: string; startDate: Date; salary: number };
|
||||||
|
|
||||||
|
const processEmployee2 = (employee: Employee) => {
|
||||||
|
console.log(
|
||||||
|
`${employee.name} started on ${employee.startDate.toDateString()} with a salary of $${employee.salary}.`,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const processEmployee = (employee: { name: string; startDate: Date; salary: number }) => {
|
||||||
|
console.log(
|
||||||
|
`${employee.name} started on ${employee.startDate.toDateString()} with a salary of $${employee.salary}.`,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
processEmployee2({ name: 'John Wick', startDate: new Date(), salary: 95000 });
|
||||||
|
processEmployee({ name: 'John Wick', startDate: new Date(), salary: 95000 });
|
||||||
|
// => John Wick started on Wed Oct 14 2026 with a salary of $95000.
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user