Umgang mit nicht typisierten Drittanbieterbibliotheken
Verwenden Sie @types-Pakete und schreiben Sie manuelle Deklarationen.
Umgang mit nicht typisierten Drittanbieterbibliotheken ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Problem: Fehlende Typen
Einige npm-Pakete enthalten keine TypeScript-Deklarationen und haben kein @types/-Paket. TypeScript behandelt sie standardmäßig als any, wodurch die Typsicherheit an dieser Grenze verloren geht.
import legacyLib from "untyped-lib"; // legacyLib: any@types-Pakete
Das DefinitelyTyped-Projekt stellt von der Community gepflegte Typdeklarationen für Tausende von Bibliotheken bereit. Suchen Sie auf npm nach @types/library-name.
npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript typesEine Deklarationsdatei schreiben (.d.ts)
Wenn kein @types-Paket existiert, schreiben Sie eine minimale Deklarationsdatei in Ihrem Projekt, um das Modul und seine Typen zu deklarieren.
// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
export function doSomething(x: string): number;
export const version: string;
}Modulerweiterung
Erweitern Sie bestehende Third-Party-Typen, indem Sie eigene Deklarationen zu einem vorhandenen Modul hinzufügen, ohne es zu forken.
// Extend Express Request with a custom property
declare namespace Express {
interface Request {
user?: AuthUser;
}
}Wildcard-Moduldeklarationen
Verwenden Sie für ganze Kategorien nicht typisierter Importe (z. B. Asset-Dateien) Wildcard-Moduldeklarationen.
// src/types/assets.d.ts
declare module "*.svg" {
const content: string;
export default content;
}
declare module "*.json" {
const value: Record<string, unknown>;
export default value;
}noImplicitAny und nicht typisierte Bibliotheken
Mit noImplicitAny: true verursacht der Import eines nicht typisierten Moduls einen Kompilierungsfehler. Verwenden Sie eine Deklarationsdatei oder deaktivieren Sie noImplicitAny pro Datei mit // @ts-ignore.
// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";Zu DefinitelyTyped beitragen
Wenn Sie hochwertige Typen für eine nicht typisierte Bibliothek schreiben, übermitteln Sie sie an DefinitelyTyped, um die Community zu unterstützen.
# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTypedany als letztes Mittel verwenden
Wenn Sie nicht schnell an Typen gelangen können, verwenden Sie explizites any und dokumentieren Sie die dadurch entstehende technische Schuld in einem Kommentar. Das ist besser als implizites any, weil es beabsichtigt und sichtbar ist.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add typesskipLibCheck für Deklarationsfehler
Wenn eine .d.ts-Datei eines Drittanbieters interne Fehler enthält, unterdrückt skipLibCheck: true diese, ohne die eigene Typprüfung zu beeinflussen.
{
"compilerOptions": {
"skipLibCheck": true
}
}Typisierte Wrapper für unsichere Bibliotheken
Schreiben Sie ein typisiertes Wrapper-Modul um eine nicht typisierte Bibliothek, um das any einzukapseln und für den restlichen Codebestand eine sichere typisierte API bereitzustellen.
// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }Zusammenfassung: Nicht typisierte Bibliotheken
Behandeln Sie nicht typisierte Bibliotheken wie folgt: Prüfen Sie zuerst @types/-Pakete, schreiben Sie minimale Deklarationsdateien, verwenden Sie Modulerweiterungen, erstellen Sie typisierte Wrapper und setzen Sie skipLibCheck bei Deklarationsfehlern in Abhängigkeiten ein.
Schnelltest
Wo sollten Sie zuerst nach Typdeklarationen für ein nicht typisiertes npm-Paket suchen?
Das haben Sie gelernt
Nicht typisierte Bibliotheken: Prüfen Sie @types/-Pakete, schreiben Sie Deklarationsdateien, erweitern Sie bestehende Typen, verwenden Sie Wildcard-Moduldeklarationen, kapseln Sie unsichere Bibliotheken in typisierten Fassaden und setzen Sie skipLibCheck bei Abhängigkeitsfehlern ein.
Lerne TypeScript mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 101
- Lektionen
- 352
Häufig gestellte Fragen
Ist die Lektion „Umgang mit nicht typisierten Drittanbieterbibliotheken“ kostenlos?
Ja — der vollständige Text von „Umgang mit nicht typisierten Drittanbieterbibliotheken“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Umgang mit nicht typisierten Drittanbieterbibliotheken“?
Verwenden Sie @types-Pakete und schreiben Sie manuelle Deklarationen. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um TypeScript Academy zu starten?
Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Umgang mit nicht typisierten Drittanbieterbibliotheken“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die Migration beginnen: allowJs und checkJs
- JSDoc-Typannotationen als Brücke
- Strategie für die Konvertierung Datei für Datei
- Umgang mit nicht typisierten Drittanbieterbibliotheken