Sobes.tech
Middle

Vertel over utility types in TypeScript.

sobes.tech AI

Antwoord van AI

De utility-types in TypeScript zijn ingebouwde hulptypen die veelvoorkomende operaties op types vereenvoudigen, zoals transformaties, extracties of het uitsluiten van bepaalde eigenschappen. Ze verbeteren de flexibiliteit en leesbaarheid van de code.

Belangrijke utility-types:

  • Partial<Type>: Maakt een type waarin alle eigenschappen van Type optioneel zijn.
    // Maakt een type met optionele eigenschappen 'name' en 'age'
    type PartialUser = Partial<{ name: string; age: number }>;
    
  • Readonly<Type>: Maakt een type waarin alle eigenschappen van Type als alleen-lezen zijn gemarkeerd.
    // Maakt een type met de eigenschappen 'name' en 'age', alleen-lezen
    type ReadonlyUser = Readonly<{ name: string; age: number }>;
    
  • Pick<Type, Keys>: Maakt een type door een subset van eigenschappen Keys uit Type te kiezen. Keys kan een string literal of een unie van string literals zijn.
    // Maakt een type dat alleen de eigenschap 'name' bevat
    type UserWithName = Pick<{ name: string; age: number }, 'name'>;
    
  • Omit<Type, Keys>: Maakt een type door een subset van eigenschappen Keys uit Type uit te sluiten.
    // Maakt een type dat alleen de eigenschap 'age' bevat
    type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;
    
  • Exclude<UnionType, ExcludedMembers>: Maakt een type door alle leden van UnionType uit te sluiten die toewijsbaar zijn aan ExcludedMembers.
    // Maakt een type dat 'null' uitsluit van de unie
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Extraheert uit Type alle leden die toewijsbaar zijn aan Union.
    // Extraheert 'null' en 'undefined' uit de unie
    type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;
    
  • NonNull<Type>: Sluit null en undefined uit van Type.
    // Maakt een type dat 'null' en 'undefined' uitsluit
    type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;
    
  • Parameters<Type>: Krijgt de parameter types van een functie Type als tuple.
    // Krijgt de parameter types van een functie: [string, number]
    type FuncParams = Parameters<(a: string, b: number) => void>;
    
  • ReturnType<Type>: Krijgt het return type van een functie Type.
    // Krijgt het return type van een functie: number
    type FuncReturn = ReturnType<() => number>;
    
  • ConstructorParameters<Type>: Extraheert de parameter types van de constructor van een type.
    // Krijgt de parameter types van de constructor van een klasse: [string, number]
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    
  • InstanceType<Type>: Extraheert het instantie type van een constructor type.
    // Extraheert het instantie type van een klasse: MyClass
    type MyClassInstance = InstanceType<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    

Het gebruik van utility-types helpt bij het creëren van meer type-veilige, flexibele en onderhoudsvriendelijke code.