bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Не проверяет тип при object spread?

Здравствуйте, а не подскажите, почему-то нет проверки тип, когда object spread. Должно выдать ошибку на наличия поля id которое подадет в EntityReturn с Entity.

interface Entity {
  id: string;
  filename: string;
}

type EntityReturn = {
  filename: string;
}

const entities: Entity[] = [{
    id: "1",
    filename: ""
}];

const views: EntityReturn[] = entities.map(
    (viewEntity: Entity): EntityReturn => ({
        ...viewEntity
    }),
);


Playground
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
EntityReturn - более общий тип относительно Entity, поэтому в EntityReturn можно передавать объекты Entity.

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

const entitie: EntityReturn = {
    id: "1",
    filename: ""
};
Ответ написан
Комментировать
yarkov
@yarkov
Помог ответ? Отметь решением.
Должно выдать ошибку на наличия поля id

Чего это ради? TS немного не так работает. Если своими словами объяснять, то как-то так:
interface ITestA {
  id: number
  name: string
}

interface ITestB {
  name: string
}

const test = {
  id: 1,
  name: "test"
};

Переменная test соответствует обоим интерфейсам, так как набор полей объекта test соответствует наиболее большому из них. Лишние поля TS ошибкой не считает. А вот если поля не хватает, то получим несоответствие интерфейсу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы