Может быть лучше способ, но с моей головы это работает:
let otherObject: ImyInterface = { a: null, b: null };
let x: ImyInterface = { ...otherObject, ...myObject };
Первая строка определяет объект нужного интерфейса.
Вторая строка определяет новый объект желаемого интерфейса и копирует в этот объект все свойства из otherObject
, а затем любые свойства из myObject
, которые соответствуют интерфейсу.
ПРИМЕЧАНИЕ. Если вы попробуете это просто так:
let x: ImyInterface = { ...myObject };
Вы увидите ошибку, что некоторые свойства интерфейса отсутствуют. Отсюда и причина сначала создать «завершенный» объект (otherObject
в моем примере).