Назад к вопросам
Middle
138
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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 все члены,assignable к ExcludedMembers.
    // Создает тип, исключающий 'null' из объединения
    type NonNullableString = Exclude<string | null | undefined, null | undefined>;
    
  • Extract<Type, Union>: Извлекает из Type все члены, assignable к 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 типов способствует созданию более типобезопасного, гибкого и легко поддерживаемого кода.