objectypes
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

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[]
}

Package Sidebar

Install

npm i objectypes

Weekly Downloads

1,496

Version

1.3.0

License

MIT

Unpacked Size

39.6 kB

Total Files

65

Last publish

Collaborators

  • marquesvf