тип {} заявлен как "любое значение, кроме null и undefined". Тип object - "любое непримитивное значение".
Суть вопроса:
let o: object = 1; // закономерная ошибка
let a: {} = 1;
let o2: object = a; // почему тут нет ошибки?
в object заехал примитив. Это ведь баг, или что? {} здесь выглядит как подмножество object