Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including shy-type with all npm packages installed. Try it out:

var shyType = require("shy-type")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

shy-type v1.0.1

A minimal runtime type safety library.

shy-type

Shy-type is a minimal runtime type safety library for javascript.

It's mainly intended for user cases where bigger more robust solutions, like Flow or Typescript, are not feasible. Scenarios where types can not be determined before runtime are also good user cases. Form validation is however not something it is designed for, as error messages are focused on being programmer friendly (i.e. not end user friendly).

The library has no dependencies and is very small. It runs in both node and most browsers.

Checks

Shy has checker functions for all the basic javascipt types:

  • boolean
  • int
  • number
  • string
  • function
  • object
  • array

Example

Checkers take the value to check as the first (and only obligatory) argument.

// Passing check
type.bool(true)

// Failing check (throws TypeError)
type.bool("true")

Checks return the value. This simplifies checking results of calculation.

var manhattanDistance = type.num(x + y)

Adding hints can improve solving bugs. Know which check failed, even after minification.

// Passing check with hint 
// (returns value, ignoring hint)
type.str("George", "Name of great mathematician")

// Failing check with hint 
// (throws TypeError "User id in DB - Expected 'George' to be a number")
type.int("George", "User id in DB")

One of the main usage areas is safe guarding public functions.

function hello(name) {
    console.info("Hello " + type.str(name, "Name of person"))   
}


function fibonacci(n) {
    type.int(n)
    if (n<=1) {
        return 1;
    } else {
        return fibonacci(n-1) + fibonacci(n-2)
    }
}

Use destructuring assignment if you prefer compact calls.

// Optional shorter names
const {bool, int, num, str, fun, obj, arr} = require('shy-type')

bool(true, "George?");

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free