TypeScript Привести объект к другому объекту, все еще имеет свойства исходного типа - PullRequest
0 голосов
/ 27 мая 2018

Проблема

У меня проблемы с приведением TypeScript.Я получаю объект типа B, и я пытаюсь привести этот объект к типу A, но также не пропускаю свойства из типа B для поездки.

Вопрос

Есть ли способ сделать это без явной ссылки на свойство otherName?Это явно упрощенная версия ситуации, в которой я на самом деле нахожусь.

export class A {
  id: 0;
  name: '';
}

export class B extends A {
  otherName: '';
}

Например:

Если я начну с чего-то вроде

const b = new B();
const a1 = <A> b;
const a2 = b as A;
console.log(b, a1, a2);

resultsв:

{id: 0, name: '', otherName: ''}, {id: 0, name: '', otherName: ''}, {id: 0, name: '', otherName: ''}

Вместо этого я хотел бы иметь что-то вроде:

{id: 0, name: '', otherName: ''}, {id: 0, name: ''}, {id: 0, name: ''}

1 Ответ

0 голосов
/ 27 мая 2018

Система типов TypeScript не влияет на фактический JavaScript.

Думайте об этом как о подсказке или инструменте, который поможет вам лучше понять, что под рукой.

Если вы хотите удалить свойства изобъект, рассмотрите возможность использования таких утилит, как lodash или ramda.

...