TypeScript
Next.js bringt TypeScript mit sich und installiert automatisch die notwendigen Pakete sowie konfiguriert die richtigen Einstellungen, wenn Sie ein neues Projekt mit create-next-app
erstellen.
Um TypeScript zu einem bestehenden Projekt hinzuzufügen, benennen Sie eine Datei in .ts
/ .tsx
um. Führen Sie next dev
und next build
aus, um automatisch die notwendigen Abhängigkeiten zu installieren und eine tsconfig.json
-Datei mit den empfohlenen Konfigurationsoptionen hinzuzufügen.
Gut zu wissen: Wenn Sie bereits eine
jsconfig.json
-Datei haben, kopieren Sie diepaths
-Compiler-Option aus der altenjsconfig.json
in die neuetsconfig.json
-Datei und löschen Sie die altejsconfig.json
-Datei.
IDE-Plugin
Next.js enthält ein benutzerdefiniertes TypeScript-Plugin und einen Type-Checker, die von VSCode und anderen Code-Editoren für erweiterte Type-Checking- und Auto-Vervollständigungsfunktionen genutzt werden können.
Sie können das Plugin in VS Code aktivieren, indem Sie:
- Die Befehlspalette öffnen (
Strg/⌘
+Umschalt
+P
) - Nach "TypeScript: Select TypeScript Version" suchen
- "Use Workspace Version" auswählen

Nun wird beim Bearbeiten von Dateien das benutzerdefinierte Plugin aktiviert. Beim Ausführen von next build
wird der benutzerdefinierte Type-Checker verwendet.
Das TypeScript-Plugin kann bei folgenden Punkten helfen:
- Warnung, wenn ungültige Werte für Segment-Konfigurationsoptionen übergeben werden.
- Anzeige verfügbarer Optionen und Kontextdokumentation.
- Sicherstellung, dass die
'use client'
-Direktive korrekt verwendet wird. - Sicherstellung, dass Client-Hooks (wie
useState
) nur in Client-Komponenten verwendet werden.
🎥 Ansehen: Erfahren Sie mehr über das integrierte TypeScript-Plugin → YouTube (3 Minuten)
End-to-End-Type-Sicherheit
Der Next.js App Router bietet verbesserte Type-Sicherheit. Dazu gehören:
- Keine Serialisierung von Daten zwischen Fetch-Funktion und Seite: Sie können
fetch
direkt in Komponenten, Layouts und Seiten auf dem Server verwenden. Diese Daten müssen nicht serialisiert (in einen String umgewandelt) werden, um an die Client-Seite zur Verwendung in React übergeben zu werden. Daapp
standardmäßig Server-Komponenten verwendet, können wir Werte wieDate
,Map
,Set
und mehr ohne zusätzliche Schritte verwenden. Früher mussten Sie die Grenze zwischen Server und Client manuell mit Next.js-spezifischen Typen typisieren. - Optimierter Datenfluss zwischen Komponenten: Mit der Entfernung von
_app
zugunsten von Root-Layouts ist es nun einfacher, den Datenfluss zwischen Komponenten und Seiten zu visualisieren. Früher waren Datenflüsse zwischen einzelnenpages
und_app
schwer zu typisieren und konnten verwirrende Bugs einführen. Mit kolokalisiertem Data Fetching im App-Router ist dies kein Problem mehr.
Data Fetching in Next.js bietet nun eine möglichst nahe End-to-End-Type-Sicherheit, ohne dabei Ihre Auswahl an Datenbank oder Content-Provider vorzuschreiben.
Wir können die Antwortdaten so typisieren, wie Sie es mit normalem TypeScript erwarten würden. Beispiel:
Für vollständige End-to-End-Type-Sicherheit muss auch Ihre Datenbank oder Ihr Content-Provider TypeScript unterstützen. Dies kann durch die Verwendung eines ORM oder eines type-sicheren Query-Builders erfolgen.
Beispiele
Type-Checking für next.config.ts
Sie können TypeScript und importierte Typen in Ihrer Next.js-Konfiguration verwenden, indem Sie next.config.ts
nutzen.
Gut zu wissen: Die Modulauflösung in
next.config.ts
ist derzeit aufCommonJS
beschränkt. Dies kann zu Inkompatibilitäten mit ESM-only-Paketen führen, die innext.config.ts
geladen werden.
Wenn Sie die next.config.js
-Datei verwenden, können Sie in Ihrer IDE mit JSDoc eine Type-Checking-Funktionalität hinzufügen:
Statisch typisierte Links
Next.js kann Links statisch typisieren, um Tippfehler und andere Fehler bei der Verwendung von next/link
zu verhindern und so die Type-Sicherheit bei der Navigation zwischen Seiten zu verbessern.
Um diese Funktion zu nutzen, muss experimental.typedRoutes
aktiviert werden und das Projekt muss TypeScript verwenden.
Next.js generiert eine Link-Definition in .next/types
, die Informationen über alle vorhandenen Routen in Ihrer Anwendung enthält. TypeScript kann diese dann nutzen, um in Ihrem Editor Feedback über ungültige Links zu geben.
Derzeit umfasst die experimentelle Unterstützung alle String-Literale, einschließlich dynamischer Segmente. Für nicht-literale Strings müssen Sie derzeit den href
manuell mit as Route
typisieren:
Um href
in einer benutzerdefinierten Komponente, die next/link
umschließt, zu akzeptieren, verwenden Sie ein Generic:
Wie funktioniert das?
Wenn Sie
next dev
odernext build
ausführen, generiert Next.js eine versteckte.d.ts
-Datei in.next
, die Informationen über alle vorhandenen Routen in Ihrer Anwendung enthält (alle gültigen Routen alshref
-Typ vonLink
). Diese.d.ts
-Datei wird intsconfig.json
eingebunden und der TypeScript-Compiler überprüft diese.d.ts
und gibt Feedback in Ihrem Editor über ungültige Links.
Mit Async Server Components
Um eine async
-Server-Komponente mit TypeScript zu verwenden, stellen Sie sicher, dass Sie TypeScript 5.1.3
oder höher und @types/react
18.2.8
oder höher verwenden.
Wenn Sie eine ältere Version von TypeScript verwenden, könnte ein 'Promise<Element>' is not a valid JSX element
-Type-Fehler auftreten. Ein Update auf die neueste Version von TypeScript und @types/react
sollte dieses Problem beheben.
Inkrementelles Type-Checking
Seit v10.2.1
unterstützt Next.js inkrementelles Type-Checking, wenn es in Ihrer tsconfig.json
aktiviert ist. Dies kann die Type-Checking-Geschwindigkeit in größeren Anwendungen verbessern.
Deaktivieren von TypeScript-Fehlern in der Produktion
Next.js bricht Ihren Produktionsbuild (next build
) ab, wenn TypeScript-Fehler in Ihrem Projekt vorhanden sind.
Wenn Sie möchten, dass Next.js gefährlicherweise Produktionscode erzeugt, selbst wenn Ihre Anwendung Fehler enthält, können Sie den integrierten Type-Checking-Schritt deaktivieren.
Wenn Sie dies deaktivieren, stellen Sie sicher, dass Sie Type-Checks als Teil Ihres Build- oder Deploy-Prozesses durchführen, da dies sonst sehr gefährlich sein kann.
Öffnen Sie next.config.ts
und aktivieren Sie die ignoreBuildErrors
-Option in der typescript
-Konfiguration:
Gut zu wissen: Sie können
tsc --noEmit
ausführen, um selbst nach TypeScript-Fehlern zu suchen, bevor Sie den Build durchführen. Dies ist nützlich für CI/CD-Pipelines, in denen Sie TypeScript-Fehler vor dem Deployment überprüfen möchten.
Benutzerdefinierte Typdeklarationen
Wenn Sie benutzerdefinierte Typen deklarieren müssen, könnten Sie versucht sein, next-env.d.ts
zu ändern. Diese Datei wird jedoch automatisch generiert, sodass alle Änderungen, die Sie vornehmen, überschrieben werden. Stattdessen sollten Sie eine neue Datei erstellen, z.B. new-types.d.ts
, und diese in Ihrer tsconfig.json
referenzieren:
Versionsänderungen
Version | Änderungen |
---|---|
v15.0.0 | Unterstützung für next.config.ts für TypeScript-Projekte hinzugefügt. |
v13.2.0 | Statisch typisierte Links sind in der Beta verfügbar. |
v12.0.0 | SWC wird nun standardmäßig verwendet, um TypeScript und TSX für schnellere Builds zu kompilieren. |
v10.2.1 | Unterstützung für inkrementelles Type-Checking hinzugefügt, wenn es in Ihrer tsconfig.json aktiviert ist. |