Lead: @zangarus (Marwin Madsen)
Status: ✔️
geplant: KW18
Arrow Functions (Lambda Expressions)
Einführung von Generics
Einführing von Modules
Arbeiten mit externen Bibliotheken
In diesem Dojo werden für unterschiedliche Konzepte von TypeScript, die das Programmieren häufig erleichtern, Verweise auf Literatur und Aufgaben gegeben.
- Transformiere die Funkion zu einer Arrow Function.
function sum(num1, num2) {
return num1 + num2
}- Überlege (und teste aus) welche Aufgaben in S2D1 zu Arrays mittels Arrow Functions schöner gelöst werden können und welche nicht.
- Welche der folgenden Aufrufe ist korrekt?
function whoAmI<T>(param: T): T {
return param;
}
whoAmI<string>("Test");
whoAmI<number>("4");
whoAmI(5);
whoAmI<Array>(["Is", "This", "Also", "A", "Test", "?"]);
whoAmI<Object>("Another Test");- Erstelle ein Interface
funcArgs, welches die Paramternameundlengthhat. Hierbei istnameeinstringundlengtheinenumber. - Erstelle eine Funktion mit Namen
checkNameLength, die als Eingabe alle Objekte nimmt, solange die Parameter aus dem InterfacefuncArgsvorhanden sind. Die Funktion gibt true zurück, fallslengthtasächlich die Länge vonnameist und ansonsten false. - Gibt es einen Fehler bei folgendem Aufruf?
checkNameLength({ length: 3, age: 164, memebers: 140.000, name: 'VDI'});- Suche nach Literatur, die dir die Konzepte einer Linked List erklärt (selber zu recherchieren und zu wissen wo vertrauenswürdiges Material zu finden ist, ist eine Kernkompetenz, die zum Programmieren benötigt wird).
- Implementiere eine Linked List in Typescript mittels Generics. Erstelle hierfür zwei Klassen
ListItemundList.
Literatur - Interface Literatur - Generics
- Mache dich mit dem Code verraut, indem du einen weitere Validator für PLZ (engl. zip code) mittels regulären Audrücken (engl. regular expression oder kurz regex)
(/^[0-9]+$/)erstellst.
interface StringValidator {
isAcceptable(s: string): boolean;
}
let lettersRegexp = /^[A-Za-z]+$/;
class LettersOnlyValidator implements StringValidator {
isAcceptable(s: string) {
return lettersRegexp.test(s);
}
}
let strings = ["Hello", "98052", "101"];
let validators: { [s: string]: StringValidator; } = {};
validators["Letters only"] = new LettersOnlyValidator();
for (let s of strings) {
for (let name in validators) {
let isMatch = validators[name].isAcceptable(s);
console.log(`'${ s }' ${ isMatch ? "matches" : "does not match" } '${ name }'.`);
}
}- Strukturiere den obigen Code in Modules um.
- unterteile hierzu den Code in unterschiedliche Dateien: val.ts, lettersVal.ts, zipVal.ts, test.ts
- mache die Validatoren zugreifbar
- verstecke den regex
Literatur - Regex Tool - Regex Tester Literatur - Modules
- Installiere die Bibliothek Moment.js mittels npm.
- Prüfe, ob auch wie in der Einführung @types/moment installiert werden muss. Wieso ist dies nicht der Fall?
- Nutze die Dokumentation der Bibliothek, um folgende Ausgaben zu erzeugen:
- aktuelle Zeit
- 2009 um Mitternacht 7 Tagen später als heute und 1 Monat früher als heute
- aktuelle Zeit formatiert wie Sonntag, 14. Februar 2010, 3:25:50
- Übersetze folgendes Zeitformat mittels Moment.js: 2014-09-08T08:02:17-05:00