我有以下类:
class testClass
{
public text: string;
}
我使用automapper-ts创建以下映射:
AutoMapper.createMap('source', 'dest')
.convertToType(testClass);
然后进行我的映射:
this.newObject = AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties);
但是this.newObject
始终是一个空的testClass
对象。如果我删除以下行:
.convertToType(testClass);
然后,该属性将按预期映射到this.newObject
,但this.newObject
的类型将为Object
而不是testClass
。
如何使用autoMapper-ts将对象映射到另一个对象,但是将新对象作为必需的类型?
update
automapper-ts文档通过单位测试显示此方法,但此单元测试明确指定了映射:
.forMember('property', (opts: AutoMapperJs.IMemberConfigurationOptions) => { opts.mapFrom('ApiProperty'); })
如果我使用我的 text
属性这样做:
AutoMapper.createMap('source', 'dest')
.forMember('text', 'text');
.convertToType(testClass);
然后,我的实现按预期工作,但这首先是使用自动应用程序的全部点。
更改此
class testClass
{
public text: string;
}
to
class testClass
{
public text: string='';
}
您需要初始化类中的所有属性
您在地图之后投射到指定的类型:
this.newObject = AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties) as testClass;
或
this.newObject = <testClass> AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties);