TypeScript intersection type confusing [duplicate]

I am very confusing about TypeScript intersection, for example:

type A = 1 | 2;
type B = 2 | 3;

type AB = A & B;

type C = { a: 1, b: 2 };
type D = { b: 2, c: 3 };

type CD = A & B;

Type AB returns 2, this is easy to understand, but why CD returns {a: 1, b: 2, c: 3}, from my understanding, CD should returns {b: 2}, because a property only on C and c property only on D.