Упростите определения типов с помощью Omit
В TypeScript тип Omit используется для создания нового типа путем исключения выбранных свойств из существующего типа. Это может быть полезно, когда вам нужно создать новый тип, похожий на существующий тип, но с удаленными некоторыми свойствами.
В этой статье мы рассмотрим функцию типа Omit в TypeScript, как она работает, и приведем несколько примеров, которые помогут вам понять ее использование.
Что такое тип Omit в TypeScript?
Тип Omit — это встроенный служебный тип в TypeScript, который позволяет создавать новый тип, опуская выбранные свойства из существующего типа.
Вот основной синтаксис типа Omit:
type Omit<T, K> = Pick<T, Exclude<keyof T, K>>
Тип Omit принимает два параметра типа:
T: исходный тип, свойства которого следует опустить.K: тип объединения ключей (имен свойств), которые следует исключить изT.
Тип Omit возвращает новый тип, включающий все свойства из T, кроме тех, что указаны в K.
Как работает тип Omit в TypeScript?
Тип Omit работает с использованием двух других встроенных в TypeScript служебных типов: Pick и Exclude.
Тип Pick позволяет выбрать подмножество свойств из типа. Его синтаксис:
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
Тип Pick принимает два параметра типа:
T: исходный тип, из которого выбираются свойства.K: тип объединения ключей (имен свойств), которые нужно выбрать изT.
Тип Pick возвращает новый тип, который включает только свойства из T, указанные в K.
Тип Exclude позволяет исключить один или несколько ключей (имен свойств) из объединения ключей. Его синтаксис:
type Exclude<T, U> = T extends U ? never : T;
Тип Exclude принимает два параметра типа:
T: тип объединения ключей для фильтрации.U: тип объединения ключей, которые необходимо исключить.
Тип Exclude возвращает новый тип объединения, который включает только ключи из T, которых нет в U.
Путем объединения типов Pick и Exclude тип Omit создает новый тип, включающий все свойства из T, кроме тех, которые указаны в K.
Примеры использования типа Omit в TypeScript
Давайте рассмотрим несколько примеров использования типа Omit в TypeScript.
Пример 1. Отсутствие одного свойства
Предположим, у нас есть интерфейс Person с тремя свойствами: name, age и email. Мы хотим создать новый тип PersonWithoutEmail, такой же, как Person, но без свойства email.
interface Person {
name: string;
age: number;
email: string;
}
type PersonWithoutEmail = Omit<Person, "email">;
const person: PersonWithoutEmail = {
name: "John",
age: 30,
};
Мы создаем объект person типа PersonWithoutEmail только со свойствами name и age и присваиваем им значения.
Пример 2. Исключение нескольких свойств
Предположим, у нас есть интерфейс Product с четырьмя свойствами: name, description, price и category. Мы хотим создать новый тип ProductWithoutDescriptionAndCategory, такой же, как Product, но без свойств description и category.
interface Product {
name: string;
description: string;
price: number;
category: string;
}
type ProductWithoutDescriptionAndCategory = Omit<Product, "description" | "category">;
const product: ProductWithoutDescriptionAndCategory = {
name: "Product 1",
price: 10.99,
};
Мы создаем объект product типа ProductWithoutDescriptionAndCategory только со свойствами name и price и присваиваем им значения.
Заключение
В TypeScript тип Omit используется для создания нового типа путем исключения выбранных свойств из существующего типа. Используя тип Omit, вы можете создавать новые типы, похожие на существующие типы, но с удаленными некоторыми свойствами.
Чтобы использовать тип Omit, вы просто указываете исходный тип и свойства, которые следует опустить, в качестве параметров типа. Тип Omit использует типы Pick и Exclude для создания нового типа, включающего все свойства исходного типа, за исключением тех, которые указаны в свойствах, которые следует опустить.
Надеюсь, вы найдете ее полезной. Спасибо за прочтение! Если вы еще не являетесь участником Medium, подумайте о том, чтобы стать одним из них, чтобы поддержать меня здесь, что дает вам неограниченный доступ ко всему на Medium.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.