Sobes.tech
Middle

Opowiedz o typach utility w TypeScript.

sobes.tech AI

Odpowiedź od AI

Typy narzędziowe w TypeScript to wbudowane typy pomocnicze, które upraszczają ogólne operacje na typach, takie jak transformacje, wyodrębnianie lub wykluczanie określonych właściwości. Zwiększają elastyczność i czytelność kodu.

Główne przydatne typy:

  • Partial<Type>: Tworzy typ, w którym wszystkie właściwości Type są opcjonalne.
    // Tworzy typ z opcjonalnymi właściwościami 'name' i 'age'
    type PartialUser = Partial<{ name: string; age: number }>;
    
  • Readonly<Type>: Tworzy typ, w którym wszystkie właściwości Type są oznaczone jako tylko do odczytu.
    // Tworzy typ z właściwościami 'name' i 'age', dostępnymi tylko do odczytu
    type ReadonlyUser = Readonly<{ name: string; age: number }>;
    
  • Pick<Type, Keys>: Tworzy typ, wybierając zestaw właściwości Keys z Type. Keys może być literałem łańcuchowym lub unią literałów łańcuchowych.
    // Tworzy typ zawierający tylko właściwość 'name'
    type UserWithName = Pick<{ name: string; age: number }, 'name'>;
    
  • Omit<Type, Keys>: Tworzy typ, wykluczając zestaw właściwości Keys z Type.
    // Tworzy typ zawierający tylko właściwość 'age'
    type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;
    
  • Exclude<UnionType, ExcludedMembers>: Tworzy typ, wykluczając z UnionType wszystkie członków przypisywalne do ExcludedMembers.
    // Tworzy typ wykluczający 'null' z unii
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Wyodrębnia z Type wszystkie członków przypisywalne do Union.
    // Wyodrębnia 'null' i 'undefined' z unii
    type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;
    
  • NonNull<Type>: Wyklucza null i undefined z Type.
    // Tworzy typ wykluczający 'null' i 'undefined'
    type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;
    
  • Parameters<Type>: Uzyskuje typy parametrów funkcji Type w formie krotki.
    // Uzyskuje typy parametrów funkcji: [string, number]
    type FuncParams = Parameters<(a: string, b: number) => void>;
    
  • ReturnType<Type>: Uzyskuje typ wartości zwracanej funkcji Type.
    // Uzyskuje typ wartości zwracanej funkcji: number
    type FuncReturn = ReturnType<() => number>;
    
  • ConstructorParameters<Type>: Wyodrębnia typy parametrów konstruktora typu konstruktora.
    // Uzyskuje typy parametrów konstruktora klasy: [string, number]
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    
  • InstanceType<Type>: Wyodrębnia typ instancji typu konstruktora.
    // Wyodrębnia typ instancji klasy: MyClass
    type MyClassInstance = InstanceType<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    

Użycie typów narzędziowych przyczynia się do tworzenia kodu bardziej bezpiecznego, elastycznego i łatwego w utrzymaniu.