Sobes.tech
Middle

Povězte mi o utility typech v TypeScriptu.

sobes.tech AI

Odpověď od AI

Utility typy v TypeScriptu – jsou vestavěné pomocné typy, které zjednodušují obecné operace nad typy, jako jsou převody, extrakce nebo vyloučení určitých vlastností. Zvyšují flexibilitu a čitelnost kódu.

Hlavní užitečné typy:

  • Partial<Type>: Vytváří typ, ve kterém jsou všechny vlastnosti Type volitelné.
    // Vytvoří typ s volitelnými vlastnostmi 'name' a 'age'
    type PartialUser = Partial<{ name: string; age: number }>;
    
  • Readonly<Type>: Vytváří typ, ve kterém jsou všechny vlastnosti Type pouze pro čtení.
    // Vytvoří typ s vlastnostmi 'name' a 'age', dostupnými pouze pro čtení
    type ReadonlyUser = Readonly<{ name: string; age: number }>;
    
  • Pick<Type, Keys>: Vytváří typ výběrem sady vlastností Keys z Type. Keys může být řetězcový literál nebo sjednocení řetězcových literálů.
    // Vytvoří typ obsahující pouze vlastnost 'name'
    type UserWithName = Pick<{ name: string; age: number }, 'name'>;
    
  • Omit<Type, Keys>: Vytváří typ vyloučením sady vlastností Keys z Type.
    // Vytvoří typ obsahující pouze vlastnost 'age'
    type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;
    
  • Exclude<UnionType, ExcludedMembers>: Vytváří typ vyloučením členů ExcludedMembers z UnionType.
    // Vytvoří typ, který vylučuje 'null' z unie
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Extrahuje z Type všechny členy, které jsou přiřaditelné k Union.
    // Extrahuje 'null' a 'undefined' z unie
    type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;
    
  • NonNull<Type>: Vylučuje null a undefined z Type.
    // Vytváří typ, který vylučuje 'null' a 'undefined'
    type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;
    
  • Parameters<Type>: Získává typy parametrů funkce Type jako n-tici.
    // Získává typy parametrů funkce: [string, number]
    type FuncParams = Parameters<(a: string, b: number) => void>;
    
  • ReturnType<Type>: Získává typ návratové hodnoty funkce Type.
    // Získává typ návratové hodnoty funkce: number
    type FuncReturn = ReturnType<() => number>;
    
  • ConstructorParameters<Type>: Extrahuje typy parametrů konstruktoru typu konstruktor.
    // Získává typy parametrů konstruktoru třídy: [string, number]
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    
  • InstanceType<Type>: Extrahuje typ instance typu konstruktoru.
    // Extrahuje typ instance třídy: MyClass
    type MyClassInstance = InstanceType<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    

Použití utility typů přispívá k tvorbě bezpečnějšího, flexibilnějšího a snadno udržovatelného kódu.