Skip to content
Serialization using Typescript decorators
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status npm versionTest Coverage


Serialization tool using Typescript decorators and reflect-metadata.


Example with two classes :

import {Serializable, Serialize, SerializeOpt, SerializeArray} from "ts-serialize"
class Role extends Serializable {
    // Serialize knows the primitive types
    // So it can automatically validate and convert it
    public id : string;
    public order : number;
class User extends Serializable {
    // You can change the property name 
    // (`id` for the class, `identifier` for the json)
    public id : string;
    private age : number;
    public language : string;
    // For optionals, you need to use a special decorator
    @SerializeOpt( String )
    public name : Optional< string >;
    // For arrays, you need to use a special decorator
    @SerializeArray( User )
    public children : User[];
    // Composition works naturally
    public role : Role;
    // You can apply your own transformers
    @Serialize(() => Math.random() * 1000)
    public random : number;

Now, validate you json using one of those and get either errors or your serialized object/array

static fromString< T >(str: string): Either< Error[], T >;
static fromStringAsArray< T >(str: string): Either< Error[], Array< T > >;
static fromJsObject< T >(jsObject: JsObject, jsonPath: string[] = [], classPath: string[] = []): Either< Error[], T >;
static fromJsArray< T >(jsArray: JsArray, jsonPath: string[] = [], classPath: string[] = []): Either< Error[], T[] >;

And convert your instances to json using :

const user = new User();
You can’t perform that action at this time.