Skip to main content

Creating a transformer

What you'll learn
  • Creating custom functional (unidirectional) transformers
  • Creating custom object (bidirectional) transformers

Functional transformer

The functional (or unidirectional) transformer is a simple function which transform a raw value to its real counterpart.

Here is an example of functional transformer with the Foscia's toNumber transformer.

function toNumber() {
return (value: unknown) =>
value === undefined || value === null || value === ''
? undefined
: Number(value);
}

Object transformer

The object (or bidirectional) transformer has two functions to transform values:

  • serialize which converts a real value to its raw counterpart
  • deserialize which converts a raw value to its real counterpart

Here is an example of functional transformer with the Foscia's toDate transformer.

function toDate() {
return {
serialize(value: Date | undefined) {
return value?.toISOString();
},
deserialize(value: unknown) {
if (typeof value === 'string') {
const date = new Date();
date.setTime(Date.parse(value));

return date;
}

return undefined;
},
};
}