
В настоящее время система типов TypeScript очень мощная, она обеспечивает безопасность типов, производительность, масштабируемость и так далее. Таким образом, система типов TypeScript изначально предоставляет несколько «служебных типов», которые помогают нам с некоторыми определениями типов и манипуляциями. В этой статье я хочу поделиться с вами пятью из них.
Итак, приступим.
Краткое содержание
- Выбирать
- Пропускать
- Только для чтения
- Частичный
- Необходимый
1. Выберите (тип, ключи)
Вспомогательный тип Pick был разработан для создания новых типов в результате выбора некоторых свойств из существующего типа. Этот служебный тип полезен, когда вы хотите создать новый тип с определенными свойствами, унаследованными от типа со многими свойствами.
По сути, Pick удаляет все ключи, кроме указанных, из типа объекта.
type Person = {
name: string
lastName: string
age: number
hobbies: string
}
type SomePerson = Pick<Person, "name" | "age">
// type SomePerson = {
// name: string;
// age: number;
// }
2. Пропустить (Тип, Ключи)
Вспомогательный тип Omit является противоположностью типа Pick, вместо того, чтобы указывать, какие свойства вы хотите сохранить, тип Omit ожидает свойства, которые вы хотите опустить. Использование типа Omit будет полезно, если вы хотите избавиться от определенных свойств.
type Person = {
name: string
lastName: string
age: number
hobbies: string
}
type SomePerson = Omit<Person, "lastName" | "hobbies">
// type SomePerson = {
// name: string;
// age: number;
// }
3. Только для чтения (тип)
Служебный тип Readonly используется для построения типов со всеми свойствами, установленными только для чтения. Невозможно присвоить новые значения свойствам, это приведет к предупреждению TypeScript.
type Person = {
name: string
}
type ReadOnlyPerson = Readonly<Person>
const person: ReadOnlyPerson = {
name: "Fizz",
}
person.name = "Buzz"
// Cannot assign to 'name' because it is a read-only property.
4. Частичный (тип)
Тип частичной утилиты используется для создания типов со всеми необязательными свойствами. Тип частичной полезности может быть полезен, когда мы еще не знаем, каким будет объект.
type Person = {
name: string
lastName: string
age: number
address: string
}
type PartialPerson = Partial<Person>
// type PartialPerson = {
// name?: string | undefined;
// lastName?: string | undefined;
// age?: number | undefined;
// address?: string | undefined;
// }
5. Требуется (Тип)
Тип обязательной утилиты противоположен типу частичной полезности. Этот служебный тип создает тип со всеми необходимыми свойствами. Мы можем использовать тип утилиты Required, чтобы гарантировать, что необязательные свойства не отображаются в типе.
type Person = {
name?: string
lastName?: string
age?: number
address?: string
}
type RequiredPerson = Required<Person>
// type RequiredPerson = {
// name: string;
// lastName: string;
// age: number;
// address: string;
// }
Как вы можете видеть выше, я перечислил 5 из них, но есть несколько типов утилит, с которыми мы можем работать, они очень полезны и обеспечат нам безопасность типов и организацию. Подробнее можно узнать из официальной документации здесь.