Фильтровать существующие свойства объекта в Typescript - PullRequest
0 голосов
/ 23 января 2019

У меня есть any объект в машинописном тексте, который мне нужно сформировать, чтобы он действовал для данного интерфейса.

Мне нужен способ создания нового объекта таким образом, чтобы он очищал свойства, которые не относятся к определению класса, и добавил недостающие свойства.

Пример кода может быть:

interface ImyInterface {
  a: string;
  b: string;
  c?:string;
};

let myObject = {
  a: "myString",
  d: "other value"
};

У меня вопрос: есть ли способ конвертировать / фильтровать myObject, чтобы он соответствовал определению интерфейса ImyInterface и преобразовывался в

console.log (JSON.stringify(objectA));
> {a: 'myString', b: null}

1 Ответ

0 голосов
/ 24 января 2019

Может быть лучше способ, но с моей головы это работает:

    let otherObject: ImyInterface = { a: null, b: null };
    let x: ImyInterface = { ...otherObject, ...myObject };

Первая строка определяет объект нужного интерфейса.

Вторая строка определяет новый объект желаемого интерфейса и копирует в этот объект все свойства из otherObject, а затем любые свойства из myObject, которые соответствуют интерфейсу.

ПРИМЕЧАНИЕ. Если вы попробуете это просто так:

let x: ImyInterface = { ...myObject };

Вы увидите ошибку, что некоторые свойства интерфейса отсутствуют. Отсюда и причина сначала создать «завершенный» объект (otherObject в моем примере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...