Məzmuna keçin

TypeScript

Yenə başqa bir TypeScript 🙂

2 Mövzu 3 Yazı
  • TypeScript-də Generics

    typescript generics
    2
    2 Yazı
    32 Baxış
    codexC
    Mapped Types — TypeScript-in qabaqcıl xüsusiyyətlərindən biridir və mövcud obyektlərin açarlarını (yəni keyof) istifadə edərək yeni tip yarada bilməyə imkan verir. Bu xüsusiyyət əsasən reusable və dinamik tiplər yaratmaq üçün istifadə olunur. 1. Əsas sintaksis və istifadə Mapped Type yaratmaq üçün aşağıdakı sintaksisdən istifadə olunur: type MyMappedType<T> = { [P in keyof T]: T[P]; }; Bu o deməkdir ki, T tipində olan obyektin hər bir açarı (P) üçün həmin açarın tipi saxlanılır. Məsələn: type User = { name: string; age: number; }; type ReadonlyUser = { readonly [P in keyof User]: User[P]; }; // nəticə: // { // readonly name: string; // readonly age: number; // } 2. Sadə misallar a) Readonly type Readonly<T> = { readonly [K in keyof T]: T[K]; }; b) Partial type Partial<T> = { [K in keyof T]?: T[K]; }; c) Required type Required<T> = { [K in keyof T]-?: T[K]; }; 3. as ilə Key Rename (Advanced Feature) type RemoveUnderscore<T> = { [K in keyof T as K extends `_${infer R}` ? R : K]: T[K]; }; type User = { _id: string; name: string; }; type CleanUser = RemoveUnderscore<User>; // Nəticə: // { // id: string; // name: string; // } Burada as operatoru ilə _${infer R} pattern-i ilə başlayan açarları R şəklində dəyişmişik. 4. Record Mapped Type kimi type Record<K extends keyof any, T> = { [P in K]: T; }; const roles: Record<"admin" | "user", boolean> = { admin: true, user: false, }; 5. Real həyatdan misal Form input-lar üçün model yaradın: type FormFields = { email: string; password: string; }; type FormErrors = { [K in keyof FormFields]?: string; }; Bu halda FormErrors tipində email və password sahələri olacaq, amma optional və dəyərləri string olacaq.
  • TypeScript-də type və interface

    types interfaces typescript
    1
    1 Yazı
    20 Baxış
    Heç kim cavab yazmayıb