Erstellt von Lea Reimann
string
number
(sowohl Integer als auch Floats)boolean
für WahrheitswerteDate
array
(Beispiel: string[]
)object
Diese Datentypen existieren in JavaScript, meist jedoch nur implizit (language primitives), z. B. mit .toString()
oder parseInt()
.
Mit TypeScript können wir diese explizit bzw. zum Typisieren nutzen.
any
unknown
let username: string;
let age: number;
let birthdate: Date;
let isTrainee: boolean;
let pets: string[];
let thisCanBeAnything: any;
let username = 'Lea';
let number = 42;
let isBoolean = true;
Das funktioniert aber natürlich nur, wenn ein Wert zum Initialisieren bereits bekannt ist.
Wenn du den Typ unknown
verwendest, kommst du um das Type-Checking nicht herum
function makeIDtoString(id: unknown): string {
if (typeof id === 'number') {
return id.toString();
} else if (typeof id === 'string') {
return id;
} else {
return 'ID is malformed';
}
}
Eigene Type Aliases
sind hilfreich, wenn man weiß, welche Werte der Typ annehmen kann oder welche für die Anwendung relevant sind.
type Seasons = 'Spring' | 'Summer' | 'Autumn' | 'Winter';
type FibonacciNumbers = 1 | 2 | 3 | 5 | 8 | 13 | 21; // ...
Es gibt noch andere Wege, wie Type Aliases genutzt werden können: siehe Handbuch
Es kommt vor, dass Variablen verschiedene Datentypen annehmen können, dann sind Union Types hilfreich
const id: string | number;
Interfaces sind Beschreibungen von Objekten. Sie geben Aufschluss über die Struktur und Inhalte eines Objekts und können als Bauplan genutzt werden.
Sie sind dann besonders hilfreich, wenn komplexe Daten verarbeitet werden müssen oder Daten zusammengestellt werden.
Optionale Felder in einem Interface können mit einem ?
markiert werden.
interface Developer {
age: number,
name: string,
favouriteMeals: string[],
isTrainee: boolean,
colleagues?: Developer[]
}
const Lea: Developer = {
age: 27,
name: "Lea",
favouriteMeals: ['Pizza', 'Salat', 'Kartoffelbrei' ],
isTrainee: false,
colleagues: [
{ name: 'Cat', ... },
{ name: 'Manfred', ... },
...
]
}
Wenn man mit großen Datenmengen von außen (andere Teams, öffentliche APIs) arbeitet, kann es hilfreich sein, Interfaces generieren zu lassen. Das geht zum Beispiel mit json2ts.
Funktionen gibt es bereits in JavaScript, mit TypeScript können diese typsicherer gemacht werden.
// JavaScript
function sayName(name) {
console.log('Your name is ' + name);
}
// TypeScript
function sayName(name: string) {
console.log('Your name is ' + name);
}
function printId(id: number | string) {
if (typeof id === "string") {
// In this branch, id is of type 'string'
console.log(id.toUpperCase());
} else {
// Here, id is of type 'number'
console.log(id);
}
}
Rückgabewerte können natürlich auch typisiert werden
function add(a: number, b: number): number {
return a + b;
}
function showAdditionResult(a: number, b: number): void {
console.log(a + b)
}
Klassen gibt es auch in JavaScript, TypeScript macht diese typsicherer.
In folgenden Frameworks wird mit TypeScript gearbeitet oder es ist möglich
Diese Liste erhebt keinen Anspruch auf Vollständigkeit
npm install -g typescript
Hier findest du die Anleitung zur Benutzung von TypeScript (Installation, Kompilieren etc.)
Presentation made with reveal.js
Für eine Übersicht aller Folien, einfach auf ESC drücken
Source Code der Präsentation