Die TypeScript-Standardbibliothek: Ein vollständiger Überblick
TypeScript ist eine streng typisierte Obermenge von JavaScript, die in normales JS kompiliert wird. Seine Stärke liegt jedoch nicht nur im Typsystem. Die integrierte TypeScript-Standardbibliothek bietet leistungsstarke Werkzeuge für die Arbeit mit Typen, Hilfsprogrammen und Metaprogrammierung. In diesem Artikel werden wir die wichtigsten Komponenten der TypeScript-Standardbibliothek analysieren, Beispiele für ihre Verwendung zeigen und praktische Ratschläge geben.
Was ist die TypeScript-Standardbibliothek?
Die TypeScript-Standardbibliothek ist eine Sammlung von integrierten Typen, Schnittstellen und Hilfsprogrammen, die zusammen mit dem Compiler ausgeliefert werden. Sie umfasst:
- Basistypen (
string,number,boolean,any,unknown,never,void). - Hilfstypen (
Partial,Required,Pick,Omit,Recordund andere). - Dekorateure (experimentelles Feature für Metaprogrammierung).
- Namespaces (
namespace) und Module. - Erweiterte Typen (
Promise,Map,Set,WeakMap,WeakSet). - Typen für die Arbeit mit dem DOM (werden über
lib: ["dom"]eingebunden).
Hilfstypen: Das Herz der Bibliothek
Hilfstypen ermöglichen es, vorhandene Typen ohne Code-Duplizierung zu transformieren. Betrachten wir die beliebtesten:
Partial und Required
interface User { id: number; name: string; email: string;}
// Alle Felder werden optionaltype PartialUser = Partial<User>;
// Alle Felder werden erforderlich (falls sie optional waren)type RequiredUser = Required<PartialUser>;Pick und Omit
interface Product { id: number; title: string; price: number; description: string;}
// Nur die benötigten Felder auswählentype ProductPreview = Pick<Product, 'id' | 'title'>;
// Unnötige Felder ausschließentype ProductWithoutDesc = Omit<Product, 'description'>;Record und Readonly
// Erstellt ein Objekt mit bestimmten Schlüsseln und Wertentype UserRoles = Record<'admin' | 'user' | 'guest', string>;
// Macht alle Felder schreibgeschützttype ReadonlyUser = Readonly<User>;Arbeiten mit Promise und Asynchronität
TypeScript bietet integrierte Typen für die Arbeit mit asynchronem Code:
async function fetchData(): Promise<string> { return "Daten geladen";}
// Typ für das Ergebnis von Promisetype DataType = Awaited<ReturnType<typeof fetchData>>; // stringDekorateure: Metaprogrammierung in TypeScript
Dekorateure sind spezielle Deklarationen, die es ermöglichen, Klassen, Methoden, Eigenschaften und Parameter zu annotieren und zu modifizieren. Sie werden häufig in Frameworks (Angular, NestJS) verwendet.
Beispiel für einen Klassen-Dekorateur
function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype);}
@sealedclass Calculator { add(a: number, b: number): number { return a + b; }}Beispiel für einen Methoden-Dekorateur
function log(target: any, key: string, descriptor: PropertyDescriptor) { const original = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Methode ${key} mit Argumenten aufgerufen: ${args}`); return original.apply(this, args); }; return descriptor;}
class UserService { @log getUser(id: number): string { return `Benutzer ${id}`; }}Namespaces
Namespaces helfen, Code zu organisieren und