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:
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:
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:
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:
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:
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:
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:
npm install -D ts-node
Dann können Sie Ihren TypeScript-Code wie folgt ausführen:
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:
npm install -D tsx
Dann können Sie Ihren TypeScript-Code wie folgt ausführen:
npx tsx example.ts
Wenn Sie tsx
über node
verwenden möchten, können Sie tsx
über --import
registrieren:
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!