Sobes.tech
Middle

Разкажете за utility типовете в TypeScript.

sobes.tech AI

Отговор от AI

Типове Utility в TypeScript – това са вградени помощни типове, които опростяват общите операции върху типове, като преобразувания, извличания или изключвания на определени свойства. Те повишават гъвкавостта и четливостта на кода.

Основни полезни типове:

  • Partial<Type>: Създава тип, в който всички свойства на Type са опционални.
    // Създава тип с опционални свойства 'name' и 'age'
    type PartialUser = Partial<{ name: string; age: number }>;
    
  • Readonly<Type>: Създава тип, в който всички свойства на Type са само за четене.
    // Създава тип с свойства 'name' и 'age', достъпни само за четене
    type ReadonlyUser = Readonly<{ name: string; age: number }>;
    
  • Pick<Type, Keys>: Създава тип, като избира набор от свойства Keys от Type. Keys може да бъде низов литерал или обединение от низови литерали.
    // Създава тип, съдържащ само свойството 'name'
    type UserWithName = Pick<{ name: string; age: number }, 'name'>;
    
  • Omit<Type, Keys>: Създава тип, като изключва набор от свойства Keys от Type.
    // Създава тип, съдържащ само свойството 'age'
    type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;
    
  • Exclude<UnionType, ExcludedMembers>: Създава тип, като изключва членове от UnionType, които могат да бъдат приравнени към ExcludedMembers.
    // Създава тип, който изключва 'null' от обединението
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Извлича от Type всички членове, които могат да бъдат приравнени към Union.
    // Извлича 'null' и 'undefined' от обединението
    type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;
    
  • NonNull<Type>: Изключва null и undefined от Type.
    // Създава тип, който изключва 'null' и 'undefined'
    type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;
    
  • Parameters<Type>: Получава типове параметри на функция Type като кортеж.
    // Получава типове параметри на функция: [string, number]
    type FuncParams = Parameters<(a: string, b: number) => void>;
    
  • ReturnType<Type>: Получава тип на върнатата стойност на функция Type.
    // Получава тип на върнатата стойност на функция: number
    type FuncReturn = ReturnType<() => number>;
    
  • ConstructorParameters<Type>: Извлича типове на параметри на конструктора на тип конструктор.
    // Получава типове на параметри на конструктора на класа: [string, number]
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    
  • InstanceType<Type>: Извлича типа на инстанцията на типа на конструктора.
    // Извлича типа на инстанцията на класа: MyClass
    type MyClassInstance = InstanceType<typeof MyClass>;
    
    class MyClass {
        constructor(name: string, age: number) {}
    }
    

Използването на utility типове допринася за създаването на по-безопасен, гъвкав и лесен за поддръжка код.