Назад к вопросам
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 типов способствует созданию более типобезопасного, гибкого и легко поддерживаемого кода.