В чем разница между '&' и '|' в машинописном тексте

из документации машинописного текста я знаю, что «&» означает «Типы пересечений» и «|» представляет «Типы Союза». Но мне интересно, в чем разница со следующим примером:

  type Type1 = number | boolean;
  type Type2 = number & boolean;
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
2
0
1 202
1

Ответы 1

Из официального документа Typescript:

A union type describes a value that can be one of several types. We use the vertical bar (|) to separate each type, so number | string | boolean is the type of a value that can be a number, a string, or a boolean.

An intersection type combines multiple types into one. This allows you to add together existing types to get a single type that has all the features you need. For example, Person & Serializable & Loggable is a Person and Serializable and Loggable. That means an object of this type will have all members of all three types.

Было бы не так актуально объяснять это примитивными типами, такими как число или логическое значение, но представьте, что у вас есть два таких класса:

export class Toto {

 FirstName: string;
 LastName: string;

}

export class Tata {

 PhoneNumber: number;

}

Если вы пишете type Type1 = Toto | Tata;, то ваш Type1 будет либо экземпляром Toto, либо экземпляром Tata, но не оба. Но если вы напишете type Type2 = Toto & Tata;, тогда ваш Type2 будет типом, имеющим все атрибуты Toto и Tata (FirstName, LastName и PhoneNumber).

См. Более подробную информацию в док, там это довольно хорошо объяснено.

Другие вопросы по теме