Skip to content

A type-safe library to transform and validate objects

License

Notifications You must be signed in to change notification settings

marquesVF/objectypes

Repository files navigation

objectypes

A type-safe library to transform and validate objects.

Find more details about objectypes usage in the API Reference.

Installation

Make sure these compilerOptions flags are in the tsconfig.json file.

"emitDecoratorMetadata": true,
"experimentalDecorators": true

Run npm i --save objectypes to add it to your project.

Quick Start

Suppose you are requesting data from an API and you want to validate and have a type safe object from the JSON the API returns.

A JSON example:

{
  "userData": [
    {
      "name": "John  ",
      "age": 19,
      "likes": 2
    },
    {
      "name": "Maria",
      "age": 30,
      "likes": 0
    },
    {
      "name": "Peter",
      "age": 28,
      "posts": [
        {
          "title": "Comment here some lines from musics you like",
          "createdAt": "2021-10-14T20: 40: 07.609Z",
          "comments": ["Such a lonely day and it's mine"]
        }
      ],
      "likes": 100
    }
  ]
}

The target Typescript type:

import { BuildTransformation, Property } from 'objectypes'

class Post {
  @Property()
  title: string

  @Property()
  createdAt: Date

  @Property({ nullable: true })
  comments?: string[]
}

class PostPublisher {
  @Property({ nullable: true, type: Post })
  posts?: Post[]
}

class User extends PostPublisher {
  @BuildTransformation({ transform: (name: string) => name.trim() })
  @Property()
  name: string

  @Property()
  age: number

  @Property()
  likes: number
}

export class APIResponse {
  @Property({ name: 'userData', type: User })
  users: User[]
}

About

A type-safe library to transform and validate objects

Resources

License

Stars

Watchers

Forks

Packages

No packages published