-
Kurze Abfragen: Wer hat schon Erfahrung mit TypeScript? (Björn)
-
Kurze Einführung: Warum TypeScript? (Björn)
-
Vorstellung Fachlichkeit: Blog mit Usern und Posts (Björn)
-
Primitive Typen in JavaScript erklären
-
interface
- undtype
-Syntax anhand vonUser
(Björn)types.ts
einführen- Kurze Beispiele -
interface
als Go-To nennen
-
Beispiel:
findUserByName
basteln (Björn)- Kein Union-Type, sondern Placeholder-User nutzen (
| undefined
verhindern)
- Kein Union-Type, sondern Placeholder-User nutzen (
-
Promise
,.then
undawait
erklären (Chris) -
api/01_user.js
typen (Chris)filterWebsite
als Optional-Beispiel
-
Post
interface einführen -
ALLE:
api/01_post.js
typen -
Praxis-Retro: Was haben wir gelernt, was war schwierig?
-
Wer nutzt denn gerne Klassen in JavaScript? (Björn)
-
Kurze Einführung: Was sind Klassen? (Björn)
-
class User
in Type überführen (Chris) -
domain/users/02_userService.js
typen (Chris) -
domain/users/02_userService.js
class
entfernen (Chris)- Stateless-Funktion und State in "Komponente" auslagern
-
ALLE:
domain/posts/02_postService.js
typen +class
entfernen -
Praxis-Retro: Was haben wir gelernt, was war schwierig?
-
Kurze Einführung: Was sind Union Types? (Björn)
?.
und!.
erklären (findUserByName
-Beispiel)
-
UserRank
Type einführen (Björn)enum
vs String-Literal-Union (enum
kann als Wert genutzt werden)
-
domain/users/03_getUserRank.js
typen (Björn) -
InternalUser
undExternalUser
Type einführen (Björn)- Externe User kriegen richtig nervige Werbung angezeigt
-
domain/users/03_setUserType.js
typen (Björn)- Discriminated Unions erklären
- Casten mit
as
(KEINas unknown
nutzen!)
-
ALLE:
domain/users/03_updateUserRanks.js
typen -
Optional: Praxis-Retro: Was haben wir gelernt, was war schwierig?
-
Wer kennt Generics? (Chris)
-
Kurze Einführung: Was sind Generics, wofür brauchen wir sie? (Chris)
fetch
-Wrapper als Beispiel
-
domain/users/03_formatPhoneNumber.js
typen (Chris) -
Typisierung von Funktionen (Chris)
-
ALLE:
domain/users/03_getUserNames.js
typen -
Bonus:
domain/dashboard/03_search.js
typen -
Praxis-Retro: Was haben wir gelernt, was war schwierig?
-
Wer schreibt gerne Tests? (Chris)
-
Kurze Einführung: Warum sind Testen wichtig und wie helfen Types? (Chris)
-
domain/users/04_setUserType.test.ts
füllen (Chris)- Helper-Funktion mit
Partial
- Default-Wert erklären
- Helper-Funktion mit
-
domain/users/04_getUserRank.test.ts
füllen (Björn)- Mocken erklären und
typeof <function>
-Syntax
- Mocken erklären und
-
ALLE:
domain/users/04_updateUserRank.test.ts
füllen -
Praxis-Retro: Was haben wir gelernt, was war schwierig?
- TypeScript (Chris)
strict: true
- TypeScript richtig nutzennoEmit: true
-tsc
nur für Typ-Prüfung,vite
für BuildnoImplicitAny: true
- Impliziteany
vermeiden
- ESLint (Björn)
- Unabhängig von TypeScript
@typescript-eslint
-Plugin bringt die wichtigsten Regeln für TypeScript mit"@typescript-eslint/explicit-function-return-type": "error"
- Funktionen müssen immer einen expliziten Rückgabewert haben
- Hilft dabei, Framework-Regeln einzuhalten (z.B. React-Hooks)
- Erlaubt durch import-Regeln, dass Projekt-Bereiche nicht aufeinander zugreifen dürfen
@types/<dependency>
(Chris)- Externe Typ-Definitionen, weil manche Projekte keine Typen mitliefern
type.d.ts
Dateien
any
(vsunknown
vsnever
) erklären