Служебные типы в Typescript — часть 1: частичный, обязательный, только для чтения

Служебные типы в Typescript — часть 1: частичный, обязательный, только для чтения

23 мая 2022 г.

Typescript позволяет разработчикам использовать статическую проверку типов в JavaScript. Он также добавляет возможность создавать новые пользовательские типы по мере необходимости во время разработки. Помимо создания новых типов, Typescript также позволяет преобразовывать существующие типы.


Typescript предоставляет некоторые глобально доступные типы утилит. Эти служебные типы позволяют разработчику выполнять эти общие преобразования типов.


В этой статье мы рассмотрим некоторые часто используемые типы Utility и то, когда мы можем использовать их в нашем коде.


Частично


Тип утилиты Partial создает новый тип, в котором все свойства типа ввода T установлены как необязательные.


```машинопись


точка интерфейса {


х: число;


у: число;


я?: число;


тип PointPartial = Partial


// х?: число;


// у?: число;


// г?: номер;


Его можно использовать для ввода параметра функции, которая используется для обновления свойств объекта, как показано в примере ниже.


```машинопись


интерфейс Пользователь {


имя: строка;


фамилия: строка;


возраст: число;


const updateUser = (пользователь: Пользователь, updatedFields: Partial<Пользователь>) => ({


...пользователь,


...обновленоПоля,


константный пользователь1: Пользователь = {


Имя: "Андерсон",


фамилия: "Осайри",


возраст: 27,


const user2 = updateUser(user1, {возраст: 28});


console.log(пользователь2); // {имя: "Андерсон", фамилия: "Осайри", возраст: 28 }


Обязательно


Тип утилиты Required создает новый тип, в котором все свойства типа ввода T установлены как обязательные. Это противоположность Частичному.


```машинопись


точка интерфейса {


х: число;


у: число;


я?: число;


введите PointRequired = Required;


// х: число;


// у: число;


// г: число;


Ниже приведен пример того, где мы можем использовать тип Required. Интерфейс Todo с необязательным свойством ID можно использовать при создании задачи, потому что в этот момент мы не знаем ID. Но когда мы хотим обновить задачу, мы должны убедиться, что идентификатор установлен.


```машинопись


интерфейс Todo {


идентификационный номер;


заголовок: строка;


описание: строка;


const createTodo = (todo: Todo) => {


const newTodo = db.create(todo);


вернуть новоеТодо;


const updateTodo = (todo: Required) => {


const updatedTodo = db.update(todo);


вернуть обновленныйTodo;


создатьTodo({


title: "Написать статью",


описание: "Выберите тему",


обновитьTodo({


идентификатор: 3,


title: "Написать статью",


описание: "Тема выбрана",


Только для чтения


Служебный тип Только для чтения создает новый тип, в котором все свойства типа ввода T устанавливаются только для чтения. Свойства нового типа нельзя переназначить.


```машинопись


точка интерфейса {


х: число;


у: число;


я?: число;


введите PointReadonly = Readonly;


// только чтение x: число;


// только для чтения y: number;


// только для чтения z?: number;


Утилита только для чтения полезна для отображения выражений присваивания, которые не удастся выполнить во время выполнения. Это происходит при попытке переназначить свойства замороженного объекта.


```машинопись


интерфейс Пользователь {


имя: строка;


фамилия: строка;


возраст: число;


const freeze = (obj: T): Только для чтения => Object.freeze(obj);


постоянный пользователь: Пользователь = {


Имя: "Андерсон",


фамилия: "Осайри",


возраст: 27,


const readonlyUser = заморозить (пользователь);


// Невозможно присвоить возрасту, потому что это свойство доступно только для чтения


readonlyUser.age = 28;


Вывод


В этой статье мы рассмотрели три встроенных типа утилит, предоставляемых Typescript, и то, как мы можем использовать их в нашем коде.


  • Частичный, создающий новый тип, в котором все свойства устанавливаются как необязательные.

  • Обязательный, который создает новый тип, в котором все свойства установлены как обязательные.

  • Только для чтения, который создает новый тип, в котором все свойства устанавливаются только для чтения.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE