New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

decorators-typecheck

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

decorators-typecheck

ES7 or ESNext Decorator for TypeScript like typechecking on class methods.

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

Read Me!

Decorators are not even in the cut for ES7, which means if you want to use this extremely convenient little library, you'll have to compile it with Babel, using the following plugin: babel-plugin-transform-decorators-legacy.

How to use

As I was looking for an easier way to add type checking to my dependencies of other modules, I realised that most of the time I was simply writing the same things over and over. As awesome programmers, we should keep our code DRY and so this is what I came up with. Hope you'll like it and feel free to contribute to it.

Basic example:

import * as typecheck from 'decorators-typecheck'
// same as const typecheck = require('decorators-typecheck'); You'll need to transpile it with Babel even for Node JS anyway.

class MyClass {
  constructor(...args) {
    this.data = args
  }

  @typecheck('string')
  sayHello (name) {
    console.log(`Hello, ${name}!`)
  }

  @typecheck('object', 'array') // notice that this module knows the difference between an array and other objects.
  compare (obj, arr) {
    for (item of obj) {
      if (arr.includes(obj[item])) {
        console.log(`We've got a match: ${obj[item]}!`)
      }
    }
  }

  @typecheck('any', 'any', 'optional') // if we want to make it so that typecheck skips some arguments, we can give it the 'any' or 'optional' argument. They do the same thing, but your collegue may thank you for using both.
  lastFunction (any, sortOf, arg) {
    
  }
}

let myClass = new myClass()

myClass.sayHello('Daniel') // > Hello, Daniel!

myClass.sayHello({name: 'Daniel'}) // > Uncaught TypeError: Argument 0 should be of type string. Specified type: object.

// The following will not run after error. So let's assume this is another scenario...

myClass.compare({ one: 'something', two: 'otherthing' }, ['something', 'somethingElse']) // > We've got a match: something!

myClass.compare(['something', 'somethingElse'], { one: 'something', two: 'otherthing' }) // > Uncaught TypeError: Argument 0 should be of type object. Specified type: array.

Learn More about Decorators

To learn more about decorators follow this link.

Keywords

FAQs

Package last updated on 15 Jan 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc