Eine Type-Utility-Bibliothek veröffentlichen
Paketieren und teilen Sie benutzerdefinierte Utility-Typen auf npm.
Eine Type-Utility-Bibliothek veröffentlichen 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.
Was ist eine Utility-Typ-Bibliothek?
Eine Utility-Typ-Bibliothek exportiert ausschließlich TypeScript-Typen – keinen Code zur Laufzeit. Zu den beliebten Beispielen gehören type-fest, ts-essentials und utility-types.
// A type utility library exports types like:
export type DeepPartial<T> = T extends object
? { [K in keyof T]?: DeepPartial<T[K]> }
: T;Projektstruktur
Halten Sie es einfach: eine einzelne src/index.ts, die alle Utilities re-exportiert, mit einer tsconfig.json, die so konfiguriert ist, dass nur Deklarationen ausgegeben werden.
// tsconfig.json
{
"compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"strict": true
}
}package.json für ein reines Typenpaket
Setzen Sie die Felder main und types so, dass sie auf Ihre Deklarationen verweisen. Setzen Sie sideEffects: false für Tree-Shaking.
{
"name": "@myorg/type-utils",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"sideEffects": false,
"files": ["dist"]
}Deklarationen generieren
Führen Sie tsc aus, um .d.ts-Dateien zu erzeugen. Bei einer reinen Typbibliothek ist die JavaScript-Ausgabe leer oder minimal.
# Build declarations
npx tsc
# dist/index.d.ts is generatedVersionierung und Änderungsprotokolle
Verwenden Sie Semantic Versioning: Nicht abwärtskompatible Änderungen an Typen erhalten eine Major-Version, neue Hilfsfunktionen eine Minor-Version und Fehlerbehebungen eine Patch-Version.
# Bump version
npm version minor
# Generate changelog with conventional-changelog or changesetsAuf npm veröffentlichen
Verwenden Sie npm publish oder pnpm publish. Stellen Sie bei Scoped Packages unter einer Organisation sicher, dass Sie angemeldet sind und der Scope festgelegt ist.
npm login
npm publish --access public
# or for private: npm publish --access restrictedKompatibilität mit TypeScript-Versionen
Dokumentieren Sie die minimale TypeScript-Version, die Ihre Hilfsfunktionen voraussetzen. Rekursive Conditional Types erfordern TS 4.1 oder höher, Awaited ist ab TS 4.5 integriert.
// package.json peerDependencies
{
"peerDependencies": {
"typescript": ">=4.5"
}
}Typen mit tsd testen
Verwenden Sie das Paket tsd, um Tests auf Typebene zu schreiben, die während der CI ausgeführt werden und sicherstellen, dass Ihre Hilfsfunktionen korrekt funktionieren.
import { expectType } from "tsd";
import type { DeepPartial } from "@myorg/type-utils";
expectType<DeepPartial<{ a: { b: number } }>>({ a: {} });Dokumentation mit TSDoc
Fügen Sie Ihren Typen /** */-JSDoc-Kommentare hinzu. Tools wie TypeDoc generieren daraus API-Dokumentation.
/**
* Makes all properties of T optional at every depth.
* @example type A = DeepPartial<{ x: { y: number } }> // { x?: { y?: number } }
*/
export type DeepPartial<T> = ...Distribution im Monorepo
Veröffentlichen Sie in einem Monorepo das Typenpaket als Workspace-Paket, damit andere Apps es über workspace:* statt über npm verwenden können.
// Other package's package.json
{
"dependencies": {
"@myorg/type-utils": "workspace:*"
}
}Zusammenfassung: Typbibliotheken veröffentlichen
Eine Typ-Hilfsbibliothek verwendet emitDeclarationOnly: true, exportiert Typen aus src/index.ts, wird mit Semver versioniert, mit tsd getestet, mit TSDoc dokumentiert und auf npm oder in einer Workspace-Registry veröffentlicht.
Kurze Überprüfung
Welche tsconfig-Option generiert ausschließlich .d.ts-Dateien ohne JavaScript-Ausgabe?
Das haben Sie gelernt
Zum Veröffentlichen einer Typ-Hilfsbibliothek benötigen Sie emitDeclarationOnly, die richtigen Felder in package.json, Tests auf Typebene mit tsd, TSDoc-Kommentare und Semantic Versioning. Teilen Sie Ihre Hilfsfunktionen mit der Community oder im gesamten Monorepo.
Häufig gestellte Fragen
Ist die Lektion „Eine Type-Utility-Bibliothek veröffentlichen“ kostenlos?
Ja — der vollständige Text von „Eine Type-Utility-Bibliothek veröffentlichen“ 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 „Eine Type-Utility-Bibliothek veröffentlichen“?
Paketieren und teilen Sie benutzerdefinierte Utility-Typen auf npm. 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 „Eine Type-Utility-Bibliothek veröffentlichen“?
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
- DeepPartial und DeepReadonly
- Flatten- und UnwrapPromise-Utilities
- TupleToUnion und UnionToIntersection
- Eine Type-Utility-Bibliothek veröffentlichen