TypeScript: Eine Einführung in die typisierte JavaScript-Erweiterung

TypeScript bietet eine Reihe entscheidender Funktionen, die die Entwicklung von Webanwendungen grundlegend verbessern. Dieses TypeScript-Tutorial gibt Ihnen einen Einstieg in die Programmiersprache mit Erläuterungen zu den wichtigsten Eigenschaften, Verwendungen sowie den Vor- und Nachteilen.

Was ist TypeScript?

TypeScript wurde von Microsoft entwickelt und ist eine Erweiterung von JavaScript, die in der Welt der Webentwicklung weit verbreitet ist. Eines der herausragenden Merkmale von TypeScript ist die statische Typisierung. Im Gegensatz zu JavaScript, das eine dynamische Typisierung aufweist, erlaubt TypeScript Ihnen, Datentypen für Variablen, Funktionen und Parameter zu deklarieren. Dies fördert eine frühzeitige Fehlererkennung, noch bevor der Code ausgeführt wird. Die statische Typisierung verbessert dadurch erheblich die Codequalität und erhöht zugleich die Lesbarkeit des Codes.

Die TypeScript-Syntax ist weitgehend mit der von JavaScript identisch, was die Integration in bestehende JavaScript-Projekte erleichtert. Tatsächlich ist TypeScript ein Superset von JavaScript, was bedeutet, dass jeder korrekte JavaScript-Code auch gültiger TypeScript-Code ist. Dadurch können Sie schrittweise auf TypeScript umsteigen und von den Vorteilen der statischen Typisierung und anderer Features profitieren, ohne Ihre bestehende Codebasis vollständig umschreiben zu müssen.

Hier ist ein einfaches JavaScript-Beispiel:

function greet(name) {
    return "Hello, " + name;
}
console.log(greet(123)); // Output: "Hello, 123"
javascript

In diesem JavaScript-Code ist die Funktion greet nicht auf einen bestimmten Datentyp für den Parameter name beschränkt. Dadurch kann die Funktion ohne Fehler aufgerufen werden, auch wenn wir eine Zahl als Argument übergeben.

In TypeScript darf der Code folgendermaßen aussehen:

function greet(name: string): string {
    return "Hello, " + name;
}
console.log(greet(123)); // Error in TypeScript
typescript

Hier haben wir den Parameter name explizit als Zeichenfolge (string) deklariert. Wenn wir nun versuchen, die Funktion mit einer Zahl aufzurufen, wird TypeScript einen Fehler anzeigen, da der übergebene Datentyp nicht mit dem erwarteten Datentyp übereinstimmt.

Dieses Beispiel zeigt, wie TypeScript Ihnen hilft, Fehler frühzeitig zu erkennen und die Codequalität zu steigern, indem es die Verwendung von falschen Datentypen verhindert. Es ist jedoch wichtig zu beachten, dass TypeScript letztlich zu JavaScript kompiliert wird und somit in jedem JavaScript-Umfeld ausgeführt werden kann, wodurch die Vorteile der Typsicherheit nur während der Entwicklungszeit genutzt werden.

Das sind die Einsatzgebiete von TypeScript

TypeScript ist in verschiedenen Anwendungsbereichen der Software-Entwicklung ein essenzieller Bestandteil, insbesondere in Situationen, in denen die Typsicherheit und die Codequalität von entscheidender Bedeutung sind.

Ein prominentes Einsatzgebiet von TypeScript ist die Webentwicklung. Hierbei sorgt TypeScript dafür, JavaScript-Code zu schreiben, der sicherer und leichter wartbar ist. Dies ist in umfangreichen Frontend-Projekten von Vorteil, in denen die Codebasis komplex ist. TypeScript kann aber auch auf der Serverseite (Backend) in Node.js-Anwendungen implementiert werden, um eine zusätzliche Sicherheitsschicht zu bieten. In serverlosen Architekturen wie AWS Lambda und Azure Functions hilft TypeScript, Fehler zu minimieren und eine zuverlässige Ausführung sicherzustellen.

Cross-Plattform-Entwicklung ist ein weiterer Bereich, in dem TypeScript seine Stärken zeigt. Es kann die Entwicklung von plattformübergreifenden Anwendungen und mobilen Apps wesentlich optimieren. Frameworks wie NativeScript und React Native bieten Unterstützung für TypeScript in der Programmierung von mobilen Apps für verschiedene Plattformen. In der Spieleentwicklung wird TypeScript in Projekten eingesetzt, die WebGL oder Game Engines wie Phaser oder Babylon.js benutzen. Die Typsicherheit von TypeScript trägt zur Verbesserung der Spielqualität und -wartbarkeit bei.

Für Datenvisualisierung und -analyseprojekte wird ebenfalls auf TypeScript zurückgegriffen. Bibliotheken wie D3.js bieten Unterstützung für TypeScript und ermöglichen die Erstellung anspruchsvoller Dashboards und Visualisierungen.

Managed Database von IONOS

Datenbank-Services ohne Aufwand. Maßgeschneidert auf Ihre Bedürfnisse und individuell anpassbar!

Hochverfügbar
Sicher
Individuell

So installieren Sie TypeScript

Die Installation von TypeScript ist einfach und erfordert nur wenige Schritte. Sie können TypeScript mit npm (Node Package Manager) installieren, wenn Sie Node.js auf Ihrem Computer haben.

Schritt 1: Node.js herunterladen

Überprüfen Sie, ob Sie Node.js auf Ihrem Computer installiert haben. Wenn Sie Node.js noch nicht eingerichtet haben, können Sie es von der offiziellen Website herunterladen und installieren.

Schritt 2: TypeScript im Terminal installieren

Öffnen Sie Ihre Kommandozeile (z. B. die Windows-Eingabeaufforderung, das Terminal auf macOS oder Linux) und geben Sie den folgenden Befehl ein, um TypeScript global zu installieren:

npm install -g typescript
bash

Mit dem Flag -g (global) wird TypeScript auf Ihrem gesamten System installiert, sodass Sie es von überall aus verwenden können.

Schritt 3: Installierte Version anzeigen

Sie können testen, ob die Installation erfolgreich war, indem Sie den folgenden Befehl ausführen:

tsc -v
bash

Dieser Befehl gibt die installierte Version von TypeScript aus. Wenn Sie die Versionsnummer sehen, war die Installation erfolgreich.

Nach der Installation können Sie TypeScript-Dateien (mit der Erweiterung .ts) erstellen und mit dem TypeScript-Compiler tsc kompilieren, um JavaScript-Dateien zu generieren.

Schritt 4: TypeScript-Datei erstellen

Legen Sie eine TypeScript-Datei an, z. B. app.ts, und fügen Sie Ihren TypeScript-Code ein.

type Person = { name: string, age: number };
const alice: Person = { name: "Alice", age: 30 };
console.log(`Hello, I am ${alice.name} and I am ${alice.age} years old.`);
typescript

Schritt 5: Datei kompilieren

Kompilieren Sie die TypeScript-Datei, indem Sie den folgenden Befehl eingeben:

tsc app.ts
bash

Dadurch wird app.ts in eine JavaScript-Datei mit dem Namen app.js kompiliert. Sie können dann die JavaScript-Datei ausführen.

Merkmale von TypeScript

Die Webentwicklung hat in den letzten Jahren erhebliche Fortschritte gemacht, und TypeScript konnte sich dabei als eine äußerst leistungsfähige Alternative zu JavaScript herauskristallisieren. Wir haben im Folgenden die wichtigsten Eigenschaften für Sie zusammengefasst.

Statische Typisierung

Statische Typisierung ist ein essenzieller Aspekt von TypeScript und bezieht sich auf die Festlegung von Datentypen für Variablen, Parameter, Funktionen und andere Elemente in Ihrem Code. Im Gegensatz zur dynamischen Typisierung in JavaScript, bei der die Datentypen zur Laufzeit ermittelt werden, erfolgt die Deklaration der Datentypen in TypeScript bereits während der Entwicklung, bevor der Code ausgeführt wird. Typen helfen daher bei der frühzeitigen Erkennung von Fehlern und logischen Problemen.

function add(a: number, b: number): number {
    return a + b;
}
const result = add(5, 3); // valid
const result = add(5, "3"); // Type Error
typescript

In diesem Beispiel verwenden wir für die Funktion add statische Typisierung. Die beiden Parameter a und b werden als Zahlen (number) deklariert, und die Funktion gibt einen Wert vom Typ number zurück. Dadurch werden Versuche, diese Funktion mit anderen Datentypen aufzurufen, von TypeScript als Fehler erkannt.

Optionale Typisierung

Mit optionaler Typisierung können Sie bestimmten Variablen und Parametern Typen zuweisen, während andere ohne explizite Typisierung bleiben.

function sayHello(name: string, age: any): string {
    if (age) {
        return `Hello, ${name}, you are ${age} years old.`;
    } else {
        return `Hello, ${name}.`;
    }
}
typescript

Die Funktion sayHello wird mit den Parametern name und age definiert. Die Bezeichnung any zeigt an, dass der Parameter age jeden Datentyp annehmen darf.

ES6+ Funktionen

TypeScript unterstützt moderne JavaScript-Features, einschließlich ES6 und neuerer Funktionen wie Arrow-Funktionen und Template-Strings.

const multiply = (a: number, b: number): number => a * b;
const greeting = (name: string) => `Hello, ${name}!`;
typescript

Die Pfeilfunktionen (Arrow Functions) führen zu einer kürzeren und prägnanteren Syntax.

Code-Organisation

Durch Module und Namensräume bietet TypeScript eine bessere Code-Organisation und sorgt für die Aufteilung des Codes in wiederverwendbare Teile.

// Math.ts
export function add(a: number, b: number): number {
    return a + b;
}
// Main.ts
import { add } from './Math';
const result = add(5, 3);
typescript

Hier wird die Code-Organisation mithilfe von Modulen und dem Einsatz von import und export veranschaulicht. Die Funktion add wird in einem separaten Modul Math.ts definiert und in einem anderen Modul Main.ts importiert und eingebaut.

Objektorientierte Programmierung (OOP)

TypeScript erleichtert die objektorientierte Programmierung, da es die Nutzung von TypeScript Classes, Schnittstellen und Vererbung umfasst.

class Person {
    constructor(public name: string, public age: number) {}
    greet() {
        console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
    }
}
const person = new Person("Alice", 30);
person.greet();
typescript

Dieses Beispiel zeigt die Verwendung von Klassen und objektorientierter Programmierung (OOP) in TypeScript. Die Klasse Person hat die Eigenschaften name, age und eine Methode greet, um sich vorzustellen und Informationen über sich selbst auszugeben.

Erweitertes Typsystem

Das Typsystem von TypeScript ist flexibel und umfangreich. Sie können benutzerdefinierte Typen und Schnittstellen erstellen und sogar bestehende Typen erweitern.

interface Animal {
    name: string;
}
interface Dog extends Animal {
    breed: string;
}
const myDog: Dog = { name: "Buddy", breed: "Labrador" };
typescript

Die Schnittstelle Animal definiert eine Eigenschaft name, während das Interface Dog von Animal erbt und eine zusätzliche Eigenschaft breed hinzufügt. Das Objekt myDog besitzt die Merkmale beider Schnittstellen.

Kompatibilität mit JavaScript

TypeScript ist kompatibel mit JavaScript und kann in jedem JavaScript-Umfeld ausgeführt werden. Dies erleichtert die schrittweise Einführung von TypeScript in bestehende JavaScript-Projekte.

// JavaScript-Code
function greet(name) {
    return "Hello, " + name;
}
// TypeScript-Code
function greet(name: string): string {
    return "Hello, " + name;
}
typescript

Der JavaScript-Code (ohne Typisierung) kann in einem TypeScript-Code (mit Typisierung) problemlos verwendet werden.

Was sind die Vor- und Nachteile von TypeScript?

TypeScript bietet eine Vielzahl von Vorteilen, aber es hat auch einige Nachteile. Hier ist eine Übersicht der Für- und Gegenargumente:

Vorteile

TypeScript verfügt über ein umfangreiches Ökosystem von Typ-Definitionen für viele JavaScript-Bibliotheken und Frameworks. Dadurch wird die Integration von Drittanbietercode in TypeScript-Projekten nahtlos und unkompliziert. Dies ist hilfreich in der heutigen Welt der webbasierten Anwendungen, die oft auf mehrere Libraries und Frameworks angewiesen sind.

Neben der statischen Typisierung bietet TypeScript eine Fülle von Entwicklungsfeatures, darunter Interfaces, Klassen, Module und die Unterstützung für aktuelle ECMAScript-Standards. Diese Features verbessern die Strukturierung des Codes, erleichtern die Wartbarkeit und Skalierbarkeit von Projekten und fördern die Produktivität in der Entwicklung. TypeScript wird auch von vielen integrierten Entwicklungsumgebungen (IDEs) wie Visual Studio Code hervorragend unterstützt.

Nachteile

TypeScript erfordert eine gewisse Einarbeitungszeit, insbesondere wenn Entwicklerinnen und Entwickler zuvor nur mit JavaScript gearbeitet haben. TypeScript-Code muss in JavaScript kompiliert werden, bevor er in Browsern oder Node.js-Umgebungen ausgeführt werden kann. Dies führt zu einem zusätzlichen Schritt im Entwicklungsprozess.

In kleineren Projekten kann TypeScript als übermäßig komplex empfunden werden, da die Vorteile der Typsicherheit möglicherweise nicht so offensichtlich sind. TypeScript-Projekte können aufgrund der zusätzlichen Typ-Informationen und des Kompilierungsschritts mehr Ressourcen erfordern.

Alternativen zu TypeScript

Es gibt verschiedene alternative Internet-Programmiersprachen zu TypeScript, je nach den spezifischen Anforderungen eines Projekts und den Präferenzen der Entwicklerinnen und Entwickler.

  • Flow: Flow ist eine von Facebook entwickelte statische Typisierung für JavaScript. Es ermöglicht die Hinzufügung von Typen zu JavaScript-Code, ohne eine vollständige Umstellung auf TypeScript durchführen zu müssen. Flow ist eine gute Wahl, wenn Sie schrittweise Typisierung in Ihre JavaScript-Projekte integrieren möchten.
  • Dart: Dies ist eine von Google entwickelte Programmiersprache, die zur Erstellung von Webanwendungen und mobilen Apps verwendet werden kann. Sie bietet Typsicherheit und eine gute Leistung. Dart wird oft in Kombination mit dem Flutter-Framework für die mobile App-Entwicklung eingesetzt.
  • PureScript: PureScript dient als strikt typisierte funktionale Programmiersprache, die eine starke Typsicherheit und funktionalen Programmierstil umfasst. Es erlaubt den Import von JavaScript-Bibliotheken.
  • Elm: Elm ist eine funktionale, strikt typisierte Sprache, die für die Entwicklung von Webanwendungen konzipiert ist. Elm fördert das Prinzip der „Elm Architecture“ und hat eine hohe Typsicherheit.
  • ReasonML (BuckleScript): Hierbei handelt es sich um eine von Facebook entwickelte Sprache, die auf OCaml basiert. BuckleScript ist ein Compiler, der ReasonML in JavaScript kompiliert. Es ermöglicht ebenfalls Typsicherheit und eine starke Integration mit React für die Frontend-Entwicklung.
Tipp

In weiteren Artikeln steigen wir tiefer in die Themen TypeScript Functions und TypeScript Arrays ein.