Was ist Type-fest und wozu wird es benötigt?
\n\nType-fest ist eine Sammlung von Hilfstypen für TypeScript, erstellt von der Community um Sindre Sorhus. Diese Bibliothek bietet Dutzende vorgefertigter Typen, die alltägliche Aufgaben bei der Entwicklung mit TypeScript lösen: von einfachen Transformationen (z. B. alle Felder eines Objekts optional machen) bis hin zu komplexen bedingten Typen (z. B. den Wertetyp aus einem Promise extrahieren).
\n\nWozu wird diese Bibliothek benötigt? TypeScript ist eine mächtige Sprache, aber seine eingebauten Typen (Partial, Required, Pick, Record) decken nur grundlegende Szenarien ab. In realen Projekten werden oft spezifischere Konstrukte benötigt: tiefe Objektvereinigung, Typen für die Arbeit mit JSON, strenge Typisierung von Konstanten, Extraktion von Typen aus komplexen Strukturen usw. Type-fest erspart die manuelle Erstellung dieser Typen, spart Zeit und reduziert die Wahrscheinlichkeit von Fehlern.
\n\nDie Bibliothek wird aktiv gepflegt, hat über 10.000 Sterne auf GitHub und wird in großen Projekten wie Next.js, Vite und Expo verwendet.
\n\nInstallation
\n\nType-fest ist ein npm-Paket, das als dev-Abhängigkeit installiert wird (da Typen die Laufzeit nicht beeinflussen).
\n\n# npm\nnpm install --save-dev type-fest\n\n# yarn\nyarn add --dev type-fest\n\n# pnpm\npnpm add --save-dev type-fest\n\nHinweis: Die Bibliothek wird nicht über pip installiert – sie ist ausschließlich für TypeScript/JavaScript bestimmt.
\n\nSchnellstart
\n\nNach der Installation können Sie jeden Typ aus der Bibliothek importieren. Betrachten wir ein einfaches Beispiel – die Verwendung des Typs PartialDeep, der alle Felder eines Objekts (einschließlich verschachtelter) optional macht.
import type { PartialDeep } from 'type-fest';\n\ninterface User {\n id: number;\n name: string;\n address: {\n city: string;\n zip: number;\n };\n}\n\n// Normales Partial macht nur Felder der ersten Ebene optional\ntype PartialUser = Partial<User>;\n// { id?: number; name?: string; address?: { city: string; zip: number; } }\n\n// PartialDeep macht alle verschachtelten Felder optional\ntype DeepPartialUser = PartialDeep<User>;\n// { id?: number; name?: string; address?: { city?: string; zip?: number; } }\n\nconst user: DeepPartialUser = {\n name: 'Alice',\n address: {\n city: 'Wonderland'\n // zip kann weggelassen werden\n }\n};\n\nWie Sie sehen, durchläuft PartialDeep automatisch alle Verschachtelungsebenen – genau das, was man normalerweise manuell mit rekursiven Typen schreiben müsste.
Wichtige Methoden/Typen
\n\nBetrachten wir die 10 nützlichsten Typen aus Type-fest. Für jeden werden eine Beschreibung, Parameter (falls vorhanden) und ein funktionierendes Beispiel angegeben.
\n\n1. PartialDeep
\nWas es tut: Macht alle Eigenschaften eines Objekts (einschließlich verschachtelter) optional. Durchläuft rekursiv alle Ebenen.
\nParameter: Ein obligatorischer – der Objekttyp.
\nimport type { PartialDeep } from 'type-fest';\n\ninterface Config {\n server: {\n host: string;\n port: number;\n };\n debug: boolean;\n}\n\ntype PartialConfig = PartialDeep<Config>;\n// {\n// server?: {\n// host?: string;\n// port?: number;\n// };\n// debug?: boolean;\n// }\n\nconst config: PartialConfig = {\n server: {\n host: 'localhost'\n // port nicht angegeben – kein Fehler\n }\n};\n\n2. RequiredDeep
\nWas es tut: Macht alle Eigenschaften eines Objekts (einschließlich verschachtelter) erforderlich. Das Gegenteil von PartialDeep.
Parameter: Der Objekttyp.
\nimport type { RequiredDeep } from 'type-fest';\n\ninterface User {\n name?: string;\n address?: {\n city?: string;\n };\n}\n\ntype StrictUser = RequiredDeep<User>;\n// {\n// name: string;\n// address Auch in der Bibliothek
Quartz.NET für C# (.NET): Komplettguide mit Beispielen
Redis-Client für C++: Verbindung, Installation und Anwendungsbeispiele
HTML-Parsing in C++: Bibliotheken und Beispiele für die Arbeit mit DOM und XPath
Elasticsearch-Client für Kotlin: Integration, Beispiele und Möglichkeiten