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