Не проверяет тип при object spread?
EntityReturn - более общий тип относительно Entity, поэтому в EntityReturn можно передавать объекты Entity.

Ошибку про лишнее поле будет показывать, если ты передаешь в EntityReturn литерал с лишними полями:

const entitie: EntityReturn = {
    id: "1",
    filename: ""
};
Должно выдать ошибку на наличия поля id
Чего это ради? TS немного не так работает. Если своими словами объяснять, то как-то так:
interface ITestA {
  id: number
  name: string
}

interface ITestB {
  name: string
}

const test = {
  id: 1,
  name: "test"
};
Переменная test соответствует обоим интерфейсам, так как набор полей объекта test соответствует наиболее большому из них. Лишние поля TS ошибкой не считает. А вот если поля не хватает, то получим несоответствие интерфейсу.