Ty­pe­Script bietet eine Reihe ent­schei­den­der Funk­tio­nen, die die Ent­wick­lung von Web­an­wen­dun­gen grund­le­gend ver­bes­sern. Dieses Ty­pe­Script-Tutorial gibt Ihnen einen Einstieg in die Pro­gram­mier­spra­che mit Er­läu­te­run­gen zu den wich­tigs­ten Ei­gen­schaf­ten, Ver­wen­dun­gen sowie den Vor- und Nach­tei­len.

Was ist Ty­pe­Script?

Ty­pe­Script wurde von Microsoft ent­wi­ckelt und ist eine Er­wei­te­rung von Ja­va­Script, die in der Welt der Web­ent­wick­lung weit ver­brei­tet ist. Eines der her­aus­ra­gen­den Merkmale von Ty­pe­Script ist die statische Ty­pi­sie­rung. Im Gegensatz zu Ja­va­Script, das eine dy­na­mi­sche Ty­pi­sie­rung aufweist, erlaubt Ty­pe­Script Ihnen, Da­ten­ty­pen für Variablen, Funk­tio­nen und Parameter zu de­kla­rie­ren. Dies fördert eine früh­zei­ti­ge Feh­ler­er­ken­nung, noch bevor der Code aus­ge­führt wird. Die statische Ty­pi­sie­rung ver­bes­sert dadurch erheblich die Code­qua­li­tät und erhöht zugleich die Les­bar­keit des Codes.

Die Ty­pe­Script-Syntax ist weit­ge­hend mit der von Ja­va­Script identisch, was die In­te­gra­ti­on in be­stehen­de Ja­va­Script-Projekte er­leich­tert. Tat­säch­lich ist Ty­pe­Script ein Superset von Ja­va­Script, was bedeutet, dass jeder korrekte Ja­va­Script-Code auch gültiger Ty­pe­Script-Code ist. Dadurch können Sie schritt­wei­se auf Ty­pe­Script umsteigen und von den Vorteilen der sta­ti­schen Ty­pi­sie­rung und anderer Features pro­fi­tie­ren, ohne Ihre be­stehen­de Codebasis voll­stän­dig um­schrei­ben zu müssen.

Hier ist ein einfaches Ja­va­Script-Beispiel:

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

In diesem Ja­va­Script-Code ist die Funktion greet nicht auf einen be­stimm­ten Datentyp für den Parameter name be­schränkt. Dadurch kann die Funktion ohne Fehler auf­ge­ru­fen werden, auch wenn wir eine Zahl als Argument übergeben.

In Ty­pe­Script darf der Code fol­gen­der­ma­ßen aussehen:

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

Hier haben wir den Parameter name explizit als Zei­chen­fol­ge (string) de­kla­riert. Wenn wir nun versuchen, die Funktion mit einer Zahl auf­zu­ru­fen, wird Ty­pe­Script einen Fehler anzeigen, da der über­ge­be­ne Datentyp nicht mit dem er­war­te­ten Datentyp über­ein­stimmt.

Dieses Beispiel zeigt, wie Ty­pe­Script Ihnen hilft, Fehler früh­zei­tig zu erkennen und die Code­qua­li­tät zu steigern, indem es die Ver­wen­dung von falschen Da­ten­ty­pen ver­hin­dert. Es ist jedoch wichtig zu beachten, dass Ty­pe­Script letztlich zu Ja­va­Script kom­pi­liert wird und somit in jedem Ja­va­Script-Umfeld aus­ge­führt werden kann, wodurch die Vorteile der Typ­si­cher­heit nur während der Ent­wick­lungs­zeit genutzt werden.

Das sind die Ein­satz­ge­bie­te von Ty­pe­Script

Ty­pe­Script ist in ver­schie­de­nen An­wen­dungs­be­rei­chen der Software-Ent­wick­lung ein es­sen­zi­el­ler Be­stand­teil, ins­be­son­de­re in Si­tua­tio­nen, in denen die Typ­si­cher­heit und die Code­qua­li­tät von ent­schei­den­der Bedeutung sind.

Ein pro­mi­nen­tes Ein­satz­ge­biet von Ty­pe­Script ist die Web­ent­wick­lung. Hierbei sorgt Ty­pe­Script dafür, Ja­va­Script-Code zu schreiben, der sicherer und leichter wartbar ist. Dies ist in um­fang­rei­chen Frontend-Projekten von Vorteil, in denen die Codebasis komplex ist. Ty­pe­Script kann aber auch auf der Ser­ver­sei­te (Backend) in Node.js-An­wen­dun­gen im­ple­men­tiert werden, um eine zu­sätz­li­che Si­cher­heits­schicht zu bieten. In ser­ver­lo­sen Ar­chi­tek­tu­ren wie AWS Lambda und Azure Functions hilft Ty­pe­Script, Fehler zu mi­ni­mie­ren und eine zu­ver­läs­si­ge Aus­füh­rung si­cher­zu­stel­len.

Cross-Plattform-Ent­wick­lung ist ein weiterer Bereich, in dem Ty­pe­Script seine Stärken zeigt. Es kann die Ent­wick­lung von platt­form­über­grei­fen­den An­wen­dun­gen und mobilen Apps we­sent­lich op­ti­mie­ren. Frame­works wie Na­tive­Script und React Native bieten Un­ter­stüt­zung für Ty­pe­Script in der Pro­gram­mie­rung von mobilen Apps für ver­schie­de­ne Platt­for­men. In der Spie­le­ent­wick­lung wird Ty­pe­Script in Projekten ein­ge­setzt, die WebGL oder Game Engines wie Phaser oder Babylon.js benutzen. Die Typ­si­cher­heit von Ty­pe­Script trägt zur Ver­bes­se­rung der Spiel­qua­li­tät und -wart­bar­keit bei.

Für Da­ten­vi­sua­li­sie­rung und -ana­ly­se­pro­jek­te wird ebenfalls auf Ty­pe­Script zu­rück­ge­grif­fen. Bi­blio­the­ken wie D3.js bieten Un­ter­stüt­zung für Ty­pe­Script und er­mög­li­chen die Er­stel­lung an­spruchs­vol­ler Da­sh­boards und Vi­sua­li­sie­run­gen.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

So in­stal­lie­ren Sie Ty­pe­Script

Die In­stal­la­ti­on von Ty­pe­Script ist einfach und erfordert nur wenige Schritte. Sie können Ty­pe­Script mit npm (Node Package Manager) in­stal­lie­ren, wenn Sie Node.js auf Ihrem Computer haben.

Schritt 1: Node.js her­un­ter­la­den

Über­prü­fen Sie, ob Sie Node.js auf Ihrem Computer in­stal­liert haben. Wenn Sie Node.js noch nicht ein­ge­rich­tet haben, können Sie es von der of­fi­zi­el­len Website her­un­ter­la­den und in­stal­lie­ren.

Schritt 2: Ty­pe­Script im Terminal in­stal­lie­ren

Öffnen Sie Ihre Kom­man­do­zei­le (z. B. die Windows-Ein­ga­be­auf­for­de­rung, das Terminal auf macOS oder Linux) und geben Sie den folgenden Befehl ein, um Ty­pe­Script global zu in­stal­lie­ren:

npm install -g typescript
bash

Mit dem Flag -g (global) wird Ty­pe­Script auf Ihrem gesamten System in­stal­liert, sodass Sie es von überall aus verwenden können.

Schritt 3: In­stal­lier­te Version anzeigen

Sie können testen, ob die In­stal­la­ti­on er­folg­reich war, indem Sie den folgenden Befehl ausführen:

tsc -v
bash

Dieser Befehl gibt die in­stal­lier­te Version von Ty­pe­Script aus. Wenn Sie die Ver­si­ons­num­mer sehen, war die In­stal­la­ti­on er­folg­reich.

Nach der In­stal­la­ti­on können Sie Ty­pe­Script-Dateien (mit der Er­wei­te­rung .ts) erstellen und mit dem Ty­pe­Script-Compiler tsc kom­pi­lie­ren, um Ja­va­Script-Dateien zu ge­ne­rie­ren.

Schritt 4: Ty­pe­Script-Datei erstellen

Legen Sie eine Ty­pe­Script-Datei an, z. B. app.ts, und fügen Sie Ihren Ty­pe­Script-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.`);
ty­pe­script

Schritt 5: Datei kom­pi­lie­ren

Kom­pi­lie­ren Sie die Ty­pe­Script-Datei, indem Sie den folgenden Befehl eingeben:

tsc app.ts
bash

Dadurch wird app.ts in eine Ja­va­Script-Datei mit dem Namen app.js kom­pi­liert. Sie können dann die Ja­va­Script-Datei ausführen.

Merkmale von Ty­pe­Script

Die Web­ent­wick­lung hat in den letzten Jahren er­heb­li­che Fort­schrit­te gemacht, und Ty­pe­Script konnte sich dabei als eine äußerst leis­tungs­fä­hi­ge Al­ter­na­ti­ve zu Ja­va­Script her­aus­kris­tal­li­sie­ren. Wir haben im Folgenden die wich­tigs­ten Ei­gen­schaf­ten für Sie zu­sam­men­ge­fasst.

Statische Ty­pi­sie­rung

Statische Ty­pi­sie­rung ist ein es­sen­zi­el­ler Aspekt von Ty­pe­Script und bezieht sich auf die Fest­le­gung von Da­ten­ty­pen für Variablen, Parameter, Funk­tio­nen und andere Elemente in Ihrem Code. Im Gegensatz zur dy­na­mi­schen Ty­pi­sie­rung in Ja­va­Script, bei der die Da­ten­ty­pen zur Laufzeit ermittelt werden, erfolgt die De­kla­ra­ti­on der Da­ten­ty­pen in Ty­pe­Script bereits während der Ent­wick­lung, bevor der Code aus­ge­führt wird. Typen helfen daher bei der früh­zei­ti­gen 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
ty­pe­script

In diesem Beispiel verwenden wir für die Funktion add statische Ty­pi­sie­rung. Die beiden Parameter a und b werden als Zahlen (number) de­kla­riert, und die Funktion gibt einen Wert vom Typ number zurück. Dadurch werden Versuche, diese Funktion mit anderen Da­ten­ty­pen auf­zu­ru­fen, von Ty­pe­Script als Fehler erkannt.

Optionale Ty­pi­sie­rung

Mit op­tio­na­ler Ty­pi­sie­rung können Sie be­stimm­ten Variablen und Pa­ra­me­tern Typen zuweisen, während andere ohne explizite Ty­pi­sie­rung bleiben.

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

Die Funktion sayHello wird mit den Pa­ra­me­tern name und age definiert. Die Be­zeich­nung any zeigt an, dass der Parameter age jeden Datentyp annehmen darf.

ES6+ Funk­tio­nen

Ty­pe­Script un­ter­stützt moderne Ja­va­Script-Features, ein­schließ­lich ES6 und neuerer Funk­tio­nen wie Arrow-Funk­tio­nen und Template-Strings.

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

Die Pfeil­funk­tio­nen (Arrow Functions) führen zu einer kürzeren und prä­gnan­te­ren Syntax.

Code-Or­ga­ni­sa­ti­on

Durch Module und Na­mens­räu­me bietet Ty­pe­Script eine bessere Code-Or­ga­ni­sa­ti­on und sorgt für die Auf­tei­lung des Codes in wie­der­ver­wend­ba­re 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);
ty­pe­script

Hier wird die Code-Or­ga­ni­sa­ti­on mithilfe von Modulen und dem Einsatz von import und export ver­an­schau­licht. Die Funktion add wird in einem separaten Modul Math.ts definiert und in einem anderen Modul Main.ts im­por­tiert und eingebaut.

Ob­jekt­ori­en­tier­te Pro­gram­mie­rung (OOP)

Ty­pe­Script er­leich­tert die ob­jekt­ori­en­tier­te Pro­gram­mie­rung, da es die Nutzung von Ty­pe­Script Classes, Schnitt­stel­len 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();
ty­pe­script

Dieses Beispiel zeigt die Ver­wen­dung von Klassen und ob­jekt­ori­en­tier­ter Pro­gram­mie­rung (OOP) in Ty­pe­Script. Die Klasse Person hat die Ei­gen­schaf­ten name, age und eine Methode greet, um sich vor­zu­stel­len und In­for­ma­tio­nen über sich selbst aus­zu­ge­ben.

Er­wei­ter­tes Typsystem

Das Typsystem von Ty­pe­Script ist flexibel und um­fang­reich. Sie können be­nut­zer­de­fi­nier­te Typen und Schnitt­stel­len erstellen und sogar be­stehen­de Typen erweitern.

interface Animal {
    name: string;
}
interface Dog extends Animal {
    breed: string;
}
const myDog: Dog = { name: "Buddy", breed: "Labrador" };
ty­pe­script

Die Schnitt­stel­le Animal definiert eine Ei­gen­schaft name, während das Interface Dog von Animal erbt und eine zu­sätz­li­che Ei­gen­schaft breed hinzufügt. Das Objekt myDog besitzt die Merkmale beider Schnitt­stel­len.

Kom­pa­ti­bi­li­tät mit Ja­va­Script

Ty­pe­Script ist kom­pa­ti­bel mit Ja­va­Script und kann in jedem Ja­va­Script-Umfeld aus­ge­führt werden. Dies er­leich­tert die schritt­wei­se Ein­füh­rung von Ty­pe­Script in be­stehen­de Ja­va­Script-Projekte.

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

Der Ja­va­Script-Code (ohne Ty­pi­sie­rung) kann in einem Ty­pe­Script-Code (mit Ty­pi­sie­rung) pro­blem­los verwendet werden.

Was sind die Vor- und Nachteile von Ty­pe­Script?

Ty­pe­Script bietet eine Vielzahl von Vorteilen, aber es hat auch einige Nachteile. Hier ist eine Übersicht der Für- und Ge­gen­ar­gu­men­te:

Vorteile

Ty­pe­Script verfügt über ein um­fang­rei­ches Ökosystem von Typ-De­fi­ni­tio­nen für viele Ja­va­Script-Bi­blio­the­ken und Frame­works. Dadurch wird die In­te­gra­ti­on von Dritt­an­bie­ter­code in Ty­pe­Script-Projekten nahtlos und un­kom­pli­ziert. Dies ist hilfreich in der heutigen Welt der web­ba­sier­ten An­wen­dun­gen, die oft auf mehrere Libraries und Frame­works an­ge­wie­sen sind.

Neben der sta­ti­schen Ty­pi­sie­rung bietet Ty­pe­Script eine Fülle von Ent­wick­lungs­fea­tures, darunter In­ter­faces, Klassen, Module und die Un­ter­stüt­zung für aktuelle EC­MA­Script-Standards. Diese Features ver­bes­sern die Struk­tu­rie­rung des Codes, er­leich­tern die Wart­bar­keit und Ska­lier­bar­keit von Projekten und fördern die Pro­duk­ti­vi­tät in der Ent­wick­lung. Ty­pe­Script wird auch von vielen in­te­grier­ten Ent­wick­lungs­um­ge­bun­gen (IDEs) wie Visual Studio Code her­vor­ra­gend un­ter­stützt.

Nachteile

Ty­pe­Script erfordert eine gewisse Ein­ar­bei­tungs­zeit, ins­be­son­de­re wenn Ent­wick­le­rin­nen und Ent­wick­ler zuvor nur mit Ja­va­Script ge­ar­bei­tet haben. Ty­pe­Script-Code muss in Ja­va­Script kom­pi­liert werden, bevor er in Browsern oder Node.js-Um­ge­bun­gen aus­ge­führt werden kann. Dies führt zu einem zu­sätz­li­chen Schritt im Ent­wick­lungs­pro­zess.

In kleineren Projekten kann Ty­pe­Script als übermäßig komplex empfunden werden, da die Vorteile der Typ­si­cher­heit mög­li­cher­wei­se nicht so of­fen­sicht­lich sind. Ty­pe­Script-Projekte können aufgrund der zu­sätz­li­chen Typ-In­for­ma­tio­nen und des Kom­pi­lie­rungs­schritts mehr Res­sour­cen erfordern.

Al­ter­na­ti­ven zu Ty­pe­Script

Es gibt ver­schie­de­ne al­ter­na­ti­ve Internet-Pro­gram­mier­spra­chen zu Ty­pe­Script, je nach den spe­zi­fi­schen An­for­de­run­gen eines Projekts und den Prä­fe­ren­zen der Ent­wick­le­rin­nen und Ent­wick­ler.

  • Flow: Flow ist eine von Facebook ent­wi­ckel­te statische Ty­pi­sie­rung für Ja­va­Script. Es er­mög­licht die Hin­zu­fü­gung von Typen zu Ja­va­Script-Code, ohne eine voll­stän­di­ge Um­stel­lung auf Ty­pe­Script durch­füh­ren zu müssen. Flow ist eine gute Wahl, wenn Sie schritt­wei­se Ty­pi­sie­rung in Ihre Ja­va­Script-Projekte in­te­grie­ren möchten.
  • Dart: Dies ist eine von Google ent­wi­ckel­te Pro­gram­mier­spra­che, die zur Er­stel­lung von Web­an­wen­dun­gen und mobilen Apps verwendet werden kann. Sie bietet Typ­si­cher­heit und eine gute Leistung. Dart wird oft in Kom­bi­na­ti­on mit dem Flutter-Framework für die mobile App-Ent­wick­lung ein­ge­setzt.
  • Pu­reScript: Pu­reScript dient als strikt ty­pi­sier­te funk­tio­na­le Pro­gram­mier­spra­che, die eine starke Typ­si­cher­heit und funk­tio­na­len Pro­gram­mier­stil umfasst. Es erlaubt den Import von Ja­va­Script-Bi­blio­the­ken.
  • Elm: Elm ist eine funk­tio­na­le, strikt ty­pi­sier­te Sprache, die für die Ent­wick­lung von Web­an­wen­dun­gen kon­zi­piert ist. Elm fördert das Prinzip der „Elm Ar­chi­tec­tu­re“ und hat eine hohe Typ­si­cher­heit.
  • ReasonML (Buck­le­Script): Hierbei handelt es sich um eine von Facebook ent­wi­ckel­te Sprache, die auf OCaml basiert. Buck­le­Script ist ein Compiler, der ReasonML in Ja­va­Script kom­pi­liert. Es er­mög­licht ebenfalls Typ­si­cher­heit und eine starke In­te­gra­ti­on mit React für die Frontend-Ent­wick­lung.
Tipp

In weiteren Artikeln steigen wir tiefer in die Themen Ty­pe­Script Functions und Ty­pe­Script Arrays ein.

1febc3f4bdaa021ae8d047e7eecac660
Zum Hauptmenü