Как работает оператор &?
То что вы написали в вопросе и в комментарии к моему встречному вопросу - это две совершенно разные вещи.

То что в вопросе:
const myVar = ClassCat & ClassDog;
Тут работа идёт со значениями и & - это побитовое И.

А вот кусок кода из вашего пояснения:
export type CatDocument = Cat & Document;
1. Это Typescript. В JS нет никакого Export type
2. Тут работа идёт уже с типами (Не со значениями!). & - это пересечение типов
CatDocument - это пересечение типов Cat и Document.

На практике это значит, что переменная, которая имеет тип CatDocument должна иметь все поля из Cat и из Document, если Cat и Document - это объекты.
Всё зависит от типа ClassCat и ClassDog.