Sobes.tech
Middle

Vorbiți despre tipurile utility în TypeScript.

sobes.tech AI

Răspuns de la AI

Tipurile utilitare din TypeScript sunt tipuri auxiliare încorporate care simplifică operațiile comune asupra tipurilor, cum ar fi transformările, extragerile sau excluderea anumitor proprietăți. Ele sporesc flexibilitatea și lizibilitatea codului.

Tipurile utile principale:

  • Partial<Type>: Creează un tip în care toate proprietățile lui Type sunt opționale.
    // Creează un tip cu proprietățile opționale 'name' și 'age'
    type PartialUser = Partial<{ name: string; age: number }>;
    
  • Readonly<Type>: Creează un tip în care toate proprietățile lui Type sunt marcate ca doar pentru citire.
    // Creează un tip cu proprietățile 'name' și 'age', disponibile doar pentru citire
    type ReadonlyUser = Readonly<{ name: string; age: number }>;
    
  • Pick<Type, Keys>: Creează un tip selectând un set de proprietăți Keys din Type. Keys poate fi un literal de șir sau o uniune de literale de șir.
    // Creează un tip conținând doar proprietatea 'name'
    type UserWithName = Pick<{ name: string; age: number }, 'name'>;
    
  • Omit<Type, Keys>: Creează un tip excludând un set de proprietăți Keys din Type.
    // Creează un tip conținând doar proprietatea 'age'
    type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;
    
  • Exclude<UnionType, ExcludedMembers>: Creează un tip excludând din UnionType toate membrii atribuiți lui ExcludedMembers.
    // Creează un tip care exclude 'null' din uniune
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Extrage din Type toți membrii atribuiți lui Union.
    // Extrage 'null' și 'undefined' din uniune
    type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;
    
  • NonNull<Type>: Exclude null și undefined din Type.
    // Creează un tip care exclude 'null' și 'undefined'
    type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;
    
  • Parameters<Type>: Obține tipurile parametrilor funcției Type sub formă de tuple.
    // Obține tipurile parametrilor funcției: [string, number]
    type FuncParams = Parameters<(a: string, b: number) => void>;
    
  • ReturnType<Type>: Obține tipul valorii de întoarcere a funcției Type.
    // Obține tipul valorii de întoarcere a funcției: number
    type FuncReturn = ReturnType<() => number>;
    
  • ConstructorParameters<Type>: Extrage tipurile parametrilor constructorului tipului constructor.
    // Obține tipurile parametrilor constructorului clasei: [string, number]
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    
  • InstanceType<Type>: Extrage tipul de instanță al tipului constructor.
    // Extrage tipul de instanță al clasei: MyClass
    type MyClassInstance = InstanceType<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    

Utilizarea tipurilor utilitare contribuie la crearea unui cod mai sigur, flexibil și ușor de întreținut.