Я создаю объектно-ориентированную модель TypeScript из JSON с использованием JSONata.
Одним из движущих факторов является наличие полностью типизированного представления объектной модели JSON.
If Я использую $merge([...])
при отображении из источника JSON в объектную модель instanceof
информация не сохраняется.
Возможно, лучше проиллюстрировать на примере: -
Рассмотрим зарегистрированную функцию myFactory
для создания экземпляра объекта:
function myFactory() : Person {
return new Person();
}
Если я просто использую фабрику , например:
{
person: $myFactory()
}
Тогда result.person instanceof Person
будет true
.
Однако, если я использую $merge([..])
, информация о типе теряется:
{
person: $merge([$myFactory(), source.someAttributes])
}
Тогда result.person instanceof Person
это false
.
Похоже, это вызвано здесь .
На данный момент я работаю над этим, передавая ALL свойства объекта передаются заводской функции, например:
function myFactory(other : any) : Person {
return Object.assign(new Person(), other);
}
...
{
person: $myFactory(source.someAttributes)
}
Есть ли лучший вариант?