Немного о типах утилит Typescript
В настоящее время система типов TypeScript очень мощная, она обеспечивает безопасность типов, производительность, масштабируемость и так далее. Таким образом, система типов TypeScript изначально предоставляет несколько «служебных типов», чтобы помочь нам с некоторыми определениями типов и манипуляциями. В этой статье поделимся с вами пятью из них.
1. Pick (Type, Keys)
Утилита 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 (Type, Keys)
Тип утилиты Omit противоположен типу выбора, вместо указания того, какие свойства вы хотите сохранить, тип 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 (Type)
Служебный тип 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. Partial (Type)
Тип Partial утилиты используется для построения типов, для которых все свойства установлены как необязательные. Тип Partial утилиты может быть полезен, когда мы все еще не знаем, каким будет объект.
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)
Required тип утилиты делает противоположное частичному типу утилиты. Этот тип утилиты создает тип со всеми свойствами, определенными как требуется. Мы можем использовать 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 из них, но есть несколько типов утилит, с которыми мы можем работать, они очень полезны и обеспечат нам безопасность типов и организацию. Вы можете узнать больше из официальной документации здесь.