TypeScript #
Typen #
Variablendeklarierung #
var
: Im Gegensatz zu vielen anderen Sprachen ist in Typescript (und Javascript) der Gültigkeitsbereich von Variablen nicht auf den Block beschränkt, in dem sie definiert ist, sondern auf die Funktion. So hat bspw. eine in einer for-Schleife deklarierte Variable auch Gültigkeit ausserhalb dieser Schlaufe, sofern der Funktionsbereich nicht verlassen wird.let
: Deklariert eine Variable mit einem block-orientierten Gültigkeitsbereich. Wenn möglich immer vorzuziehen.const
: Deklariert eine konstante (nicht-redeklarierbare) Variable (analog zum val-Schlüsselwort in Scala)
Typsystem #
https://www.typescriptlang.org/docs/handbook/2/everyday-types.html
boolean #
Die TypenBoolean
,String
undNumber
(Grossschreibung beachten) werden von TypeScript intern verwendet und sollten nie für eigene Werte verwendet werden.
const istWahr: boolean = true;
string #
const einString: string= "Das ist ein String";
number #
const eineZahl: number = 12.34;
any #
any
ist ein nicht näher spezifizierter Typ.
let irgendetwas: any = 0;
irgendetwas = "abc";
irgendetwas = true;
null und undefined #
null
und undefined
sind Subtypen aller anderen Typen und bezeichnen nicht vorhandene bzw. uninitialisierte Werte.
const u: undefined = undefined;
const n: null = null;
Das Verhalten von null
bzw. undefined
hängt davon ab, ob die Einstellung strictNullChecks
gesetzt ist.
Wenn strictNullChecks
gesetzt ist, müssen Variablen, die potentiell null
oder undefined
sein können, auf null
/undefined
getestet werden, bevor auf sie Methoden angewendet werden, welche einen vorhandenen und initialisierten Wert voraussetzen:
function doSomething(x: string | null) {
if (x !== null) {
console.log("Hello, " + x.toUpperCase());
}
}
Zusätzlich bietet TypeScript den !
-Operator an, um null
/undefined
-Werte zu “entpacken”.
function liveDangerously(x: number | null) {
console.log(x!.toFixed());
}
Falls x === null
führt das zu einem Laufzeitfehler.
void #
void
ist der Rückgabetyp einer Funktion, die keinen Wert zurückgibt.
function log(msg: string): void {
console.log(msg);
}
never #
never
ist der Rückgabetyp einer Funktion, die nie einen Wert zurückgeben kann.
function fail() {
return error("Something failed");
}
Array #
const cards: string[] = ['Visa', 'MasterCard'];
// Alternative Syntax:
const cards: Array<string> = ['Visa', 'MasterCard'];
Tuple #
Ein Tuple ist in TypeScript ein Array-Typ mit einer fixen Anzahl an Elementen mit potentiell unterschiedlichem Typ.
const someTuple: [string, number] = ["abc", 2];
const firstElement = someTuple[0];
Zugriffsmodifikatoren #
public
: Genereller Zugriff (Standard)protected
: Zugriff nur von Members der Klasse oder der Members ihrer Erweiterungenprivate
: Zugriff nur von Members der Klassereadonly
: Für Parameter eines komplexen Typs oder Felder einer Klasse: Parameter kann in Instanz nicht redeklariert werden