data-transformation v2.0.0
Data transformation
This library provides helper that are for transforming one or multiple source objects to a target object. To transform a source type to a target type you need to define a mapping. The following example shows how:
interface SourceType {
sourceField1: string,
sourceField2: number,
}
interface TargetType {
targetField1: string,
targetField2: number,
targetField3: string,
}
const sourceToTargetMapping: FieldMapping<SourceType, TargetType> = {
targetField1: 'sourceField1',
targetField2: 'sourceField2',
targetField3: (sourceObject: SourceType) => sourceObject.sourceField2.toString(),
}
Mapping a source field to a target field can be done in two ways:
1. [target-field-name]: 'source-field-name'
With this kind of definition
the target object field with the name 'target-field-name' gets the value of the
source field with the name 'source-field-name'.
2. [target-field-name]: function(sourceObject: SourceType): TargetFieldType
When you need to transform a source field value to set the target field it
is possible define a function which should return the target field value. As
parameter this function get the whole source object.
Such mapping can then be given to the transformData helper method
const sourceObject: SourceType = {
sourceField1: 'sourceField1',
sourceField2: 3,
}
const result = transformData(sourceToTargetMapping, sourceObject)
Result should look now like this:
{
targetField1: 'sourceField1',
targetField2: 3,
targetField3: '3',
}
It is also possible to apply a mapping to already existing target object:
const sourceObject: SourceType = {
sourceField1: 'sourceField1',
sourceField2: 3,
}
const targetObject = {
targetField4: '3',
}
const result = transformData(sourceToTargetMapping, sourceObject, targetObject)
Result should look now like this:
{
targetField1: 'sourceField1',
targetField2: 3,
targetField3: '3',
targetField4: '3',
}
3 years ago