Классы Typescript, преобразованные обратно в объекты после отображения, фильтрации, поиска и т. Д. - PullRequest
0 голосов
/ 16 ноября 2018

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

Это то, что предназначено, если да, то почему?

Редактировать - или я что-то не так делаю?

let someArray = [anInstance, anInstance, anInstance...];

let myFoundInstance = someArray.find(el => el.thing === 'something');

myFoundInstance на самом деле является объектом на данный момент, и вы не можете вызывать какие-либо методы класса для него, пока не создадите новый экземпляр из него

1 Ответ

0 голосов
/ 16 ноября 2018

Эта небольшая тестовая программа работает нормально, что соответствует тому, что вы описываете:

class A {
  str: string;
  constructor(value: string) {
    this.str = value;
  }
  print = () => {
    console.log(`i am ${this.str}`);
  }
}

const array: A[] = [new A("one"), new A("two")];

const one = array.find(it => it.str === "one");
array[0].print();
one!.print();

, который выдает ожидаемый результат от вызова функции print в обоих случаях

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