Объяснение опущенного типа в TypeScript
27 апреля 2022 г.TypeScript предоставляет ряд служебных типов, которые используются для решения конкретной проблемы, возникающей при использовании типов в Javascript. Один очень полезный служебный тип, используемый в TypeScript, — это тип Omit, который позволяет нам настраивать уже существующий тип. Давайте посмотрим, как это работает.
Пользовательские типы
В этой статье предполагается, что вы знаете, как создавать собственные типы в TypeScript. Если нет, прочитайте мою статью о пользовательских типах здесь.
TypeScript Пропустить тип
В TypeScript мы часто создаем собственные типы, которые позволяют гарантировать соответствие данных определенному формату.
Например, если бы мы хотели создать пользовательский тип пользователя с четырьмя полями — «firstName», «lastName», «age» и «lastActive», мы могли бы сделать что-то вроде этого:
```javascript
введите Пользователь = {
имя: строка;
фамилия: строка;
возраст: число;
lastActive: число;
К сожалению, кодирование не всегда просто. Иногда мы хотим снова использовать наш тип, но удалить из него определенные элементы, создав таким образом новый тип. Для этого мы можем использовать Omit<Type, Omissions>
. Omit принимает два значения:
- Тип, на котором основывается наш новый тип
- Тип объединения, в котором перечислены все поля, которые нужно удалить.
Например, если мы хотим взять наш тип User и удалить age и lastActive, мы можем сделать следующее:
```javascript
введите Пользователь = {
имя: строка;
фамилия: строка;
возраст: число;
lastActive: число;
введите UserNameOnly = Omit<Пользователь, "возраст" | "последний актив">
Теперь у нас есть два типа: User
, который является нашим основным типом пользователя, и UserNameOnly
, который является нашим типом пользователя минус age
и lastActive
. Точно так же, если бы мы хотели удалить только возраст, этого было бы достаточно:
```javascript
введите UserNameAndActive = Omit<Пользователь, "возраст">
Теперь мы можем использовать наши новые типы в любом месте нашего кода. Это дает нам возможность гибко использовать тип и преобразовывать его для определенных обстоятельств. Вот пример, в котором используются оба наших новых типа:
```javascript
введите Пользователь = {
имя: строка;
фамилия: строка;
возраст: число;
lastActive: число;
введите UserNameOnly = Omit<Пользователь, "возраст" | "последний актив">
введите UserNameAndActive = Omit<Пользователь, "возраст">
константа userByName:UserNameOnly = {
Имя: "Джон",
фамилия: "Доу",
константа userWithoutAge:UserNameAndActive = {
Имя: "Джон",
фамилия: "Доу",
lastActive: -16302124725
Также опубликовано здесь
Оригинал