Skip to content

Node.js mit TypeScript

Was ist TypeScript

TypeScript ist eine Open-Source-Sprache, die von Microsoft gepflegt und entwickelt wird. Sie wird von vielen Softwareentwicklern auf der ganzen Welt geliebt und verwendet.

Im Grunde ist es eine Obermenge von JavaScript, die der Sprache neue Funktionen hinzufügt. Die bemerkenswerteste Ergänzung sind statische Typdefinitionen, etwas, das in reinem JavaScript nicht vorhanden ist. Dank der Typen ist es beispielsweise möglich zu deklarieren, welche Art von Argumenten wir erwarten und was genau in unseren Funktionen zurückgegeben wird oder welche genaue Form das Objekt hat, das wir erstellen. TypeScript ist ein wirklich mächtiges Werkzeug und eröffnet eine neue Welt von Möglichkeiten in JavaScript-Projekten. Es macht unseren Code sicherer und robuster, indem es viele Fehler verhindert, bevor der Code überhaupt ausgeliefert wird - es fängt Probleme während der Codeentwicklung ab und integriert sich wunderbar in Code-Editoren wie Visual Studio Code.

Wir können später über andere Vorteile von TypeScript sprechen, sehen wir uns jetzt einige Beispiele an!

Beispiele

Werfen Sie einen Blick auf diesen Codeausschnitt, und dann können wir ihn gemeinsam auspacken:

ts
type User = {
  name: string
  age: number
}
function isAdult(user: User): boolean {
  return user.age >= 18
}
const justine: User = {
  name: 'Justine',
  age: 23,
}
const isJustineAnAdult: boolean = isAdult(justine)

Der erste Teil (mit dem Schlüsselwort type) ist für die Deklaration unseres benutzerdefinierten Objekttyps verantwortlich, der Benutzer darstellt. Später verwenden wir diesen neu erstellten Typ, um die Funktion isAdult zu erstellen, die ein Argument vom Typ User akzeptiert und boolean zurückgibt. Danach erstellen wir justine, unsere Beispieldaten, die für den Aufruf der zuvor definierten Funktion verwendet werden können. Schließlich erstellen wir eine neue Variable mit Informationen darüber, ob justine ein Erwachsener ist.

Es gibt zusätzliche Dinge an diesem Beispiel, die Sie wissen sollten. Erstens, wenn wir die deklarierten Typen nicht einhalten würden, würde TypeScript uns alarmieren, dass etwas nicht stimmt, und Missbrauch verhindern. Zweitens muss nicht alles explizit typisiert werden - TypeScript ist sehr intelligent und kann Typen für uns ableiten. Zum Beispiel wäre die Variable isJustineAnAdult vom Typ Boolean, auch wenn wir sie nicht explizit typisiert hätten, oder justine wäre ein gültiges Argument für unsere Funktion, auch wenn wir diese Variable nicht vom Typ User deklariert hätten.

Okay, wir haben also etwas TypeScript-Code. Wie führen wir ihn jetzt aus?

Als erstes müssen wir TypeScript in unserem Projekt installieren:

bash
npm install -D typescript

Jetzt können wir es mit dem Befehl tsc im Terminal nach JavaScript kompilieren. Lass uns das tun!

Angenommen, unsere Datei heißt example.ts, würde der Befehl wie folgt aussehen:

bash
npx tsc example.ts

TIP

npx steht hier für Node Package Execute. Dieses Tool ermöglicht es uns, den TypeScript-Compiler auszuführen, ohne ihn global zu installieren.

tsc ist der TypeScript-Compiler, der unseren TypeScript-Code nimmt und ihn nach JavaScript kompiliert. Dieser Befehl führt zu einer neuen Datei namens example.js, die wir mit Node.js ausführen können. Jetzt, wo wir wissen, wie man TypeScript-Code kompiliert und ausführt, sehen wir uns die Fähigkeiten von TypeScript zur Fehlervermeidung in Aktion an!

So werden wir unseren Code modifizieren:

ts
type User = {
  name: string
  age: number
}
function isAdult(user: User): boolean {
  return user.age >= 18
}
const justine: User = {
  name: 'Justine',
  age: 'Secret!',
}
const isJustineAnAdult: string = isAdult(justine, 'Ich sollte hier nicht sein!')

Und das hat TypeScript dazu zu sagen:

bash
example.ts:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.
12     age: 'Secret!',
       ~~~
  example.ts:3:5
    3     age: number;
          ~~~
    The expected type comes from property 'age' which is declared here on type 'User'
example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.
15 const isJustineAnAdult: string = isAdult(justine, "Ich sollte hier nicht sein!");
         ~~~~~~~~~~~~~~~~
example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.
15 const isJustineAnAdult: string = isAdult(justine, "Ich sollte hier nicht sein!");
                                                     ~~~~~~~~~~~~~~~~~~~~~~
Found 3 errors in the same file, starting at: example.ts:12

Wie Sie sehen, verhindert TypeScript erfolgreich, dass wir Code ausliefern, der unerwartet funktionieren könnte. Das ist wunderbar!

Mehr über TypeScript

TypeScript bietet eine ganze Reihe weiterer großartiger Mechanismen wie Schnittstellen, Klassen, Hilfstypen und so weiter. Außerdem können Sie bei größeren Projekten Ihre TypeScript-Compilerkonfiguration in einer separaten Datei deklarieren und detailliert anpassen, wie sie funktioniert, wie streng sie ist und wo sie beispielsweise kompilierte Dateien speichert. Mehr über all diese großartigen Dinge können Sie in der offiziellen TypeScript-Dokumentation lesen.

Einige der weiteren Vorteile von TypeScript, die erwähnenswert sind, sind, dass es schrittweise übernommen werden kann, dass es dazu beiträgt, Code lesbarer und verständlicher zu machen, und dass es Entwicklern ermöglicht, moderne Sprachfunktionen zu verwenden, während Code für ältere Node.js-Versionen ausgeliefert wird.

Ausführen von TypeScript-Code in Node.js

Node.js kann TypeScript nicht nativ ausführen. Sie können node example.ts nicht direkt über die Befehlszeile aufrufen. Aber es gibt drei Lösungen für dieses Problem:

Kompilieren von TypeScript zu JavaScript

Wenn Sie TypeScript-Code in Node.js ausführen möchten, müssen Sie ihn zuerst in JavaScript kompilieren. Sie können dies mit dem TypeScript-Compiler tsc tun, wie bereits gezeigt.

Hier ist ein kleines Beispiel:

bash
npx tsc example.ts
node example.js

Ausführen von TypeScript-Code mit ts-node

Sie können ts-node verwenden, um TypeScript-Code direkt in Node.js auszuführen, ohne ihn vorher kompilieren zu müssen. Es führt jedoch keine Typüberprüfung Ihres Codes durch. Wir empfehlen daher, Ihren Code zuerst mit tsc zu überprüfen und ihn dann mit ts-node auszuführen, bevor Sie ihn ausliefern.

Um ts-node zu verwenden, müssen Sie es zuerst installieren:

bash
npm install -D ts-node

Dann können Sie Ihren TypeScript-Code wie folgt ausführen:

bash
npx ts-node example.ts

Ausführen von TypeScript-Code mit tsx

Sie können tsx verwenden, um TypeScript-Code direkt in Node.js auszuführen, ohne ihn vorher kompilieren zu müssen. Es führt jedoch keine Typüberprüfung Ihres Codes durch. Wir empfehlen daher, Ihren Code zuerst mit tsc zu überprüfen und ihn dann mit tsx auszuführen, bevor Sie ihn ausliefern.

Um tsx zu verwenden, müssen Sie es zuerst installieren:

bash
npm install -D tsx

Dann können Sie Ihren TypeScript-Code wie folgt ausführen:

bash
npx tsx example.ts

Wenn Sie tsx über node verwenden möchten, können Sie tsx über --import registrieren:

bash
node --import=tsx example.ts

TypeScript in der Node.js-Welt

TypeScript ist in der Node.js-Welt etabliert und wird von vielen Unternehmen, Open-Source-Projekten, Tools und Frameworks verwendet. Einige der bemerkenswerten Beispiele für Open-Source-Projekte, die TypeScript verwenden, sind:

  • NestJS - robustes und voll ausgestattetes Framework, das die Erstellung von skalierbaren und gut strukturierten Systemen einfach und angenehm macht
  • TypeORM - großartiges ORM, das von anderen bekannten Tools aus anderen Sprachen wie Hibernate, Doctrine oder Entity Framework beeinflusst wurde
  • Prisma - ORM der nächsten Generation mit einem deklarativen Datenmodell, generierten Migrationen und vollständig typsicheren Datenbankabfragen
  • RxJS - weit verbreitete Bibliothek für reaktive Programmierung
  • AdonisJS - Ein voll ausgestattetes Webframework mit Node.js
  • FoalTs - Das elegante Nodejs-Framework

Und viele, viele weitere großartige Projekte... Vielleicht sogar dein nächstes!