Я пытаюсь отладить странную проблему, с которой сталкиваюсь в TypeScript 3.1, Babel 7 и Webpack 4, где это работает только тогда, когда я создаю объект вручную. Вот пример (псевдокод):
B (см. изображение ниже):
const objectOfObjects = {...}
const someKeys = ['key1', 'key2', 'key3']
someKeys.filter(key => {
const i = new Foo(objectOfObjects[key]['somePropName'], /* subsequent props */);
console.log(i); // when I inspect the object here values are set correctly
return predicate(i);
});
Но вместо того, чтобы вводить это вручную objectOfObjects[key]['somePropName']
для каждого свойства, я просто передаю объект данного интерфейса TypeScript, передаю его конструктору и позволяю ему Object.assign его.
A (см. изображение ниже):
const objectOfObjects = {...}
const someKeys = ['key1', 'key2', 'key3']
someKeys.filter(key => {
const i = new Foo(objectOfObjects[key]);
console.log(i) // this does also return and object, but with all props undefined
return predicate(i);
});
Foo расширяет следующий базовый класс
class FooBase {
constructor(o: IFoo) {
if (o) {
Object.assign(this, o);
}
}
}
Когда я делаю очень простой пример, кажется, что он работает, но несмотря ни на что, когда я передаю objectOfObjects[key]
конструктору Foo в моем реальном приложении, я получаю следующее:
Когда я просмотрел это и попытался найти изменения в objectOfObjects[key]
, единственное отличие, которое я могу придумать, это то, что я выделил на изображении выше - маленькие буквы "e" и "t" слева от объекта в консоли Chrome. . Я не смог найти какую-либо документацию в поиске Google, поэтому, надеюсь, кто-то из вас знает, что это значит, и, надеюсь, это также может указать, что я здесь делаю неправильно.