typedef

1.1.0 • Public • Published

Typedef

Build Status NPM version

Low-level type-centric utility functions for Javascript.

browser support

Installation

Typedef can be used on the server with NodeJS or on the client, built with Browserify, so install with npm:

npm install typedef

Usage

extends(Child, Base)

While traditionally, favoring composition over inheritance in Javascript is typically the way to go, classic inheritance can be useful if used sparingly.

This is the extends function that is used in Typescript, Coffeescript, ES6 compilers, etc. It uses prototypes to setup something similar to to classical single inheritance.

var extends_ = require('typedef').extends;
 
function Base()
{
  console.log('base ctor');
}
 
Base.prototype.method = function()
{
  console.log('hello from base class');
}
 
...
 
extends_(Child, Base);
 
function Child()
{
  // Call base constructor
  Child.Super.apply(this, arguments);
 
  console.log('child ctor');
}
 
Child.prototype.method2 = function()
{
  console.log('hello from child class');
}
 
...
 
var foo = new Child();
// base ctor
// child ctor
 
foo.method();
// hello from base class
 
foo.method2();
// hello from child class
 
foo instanceof Child;
// true
 
foo instanceof Base;
// true

mixin(Constructor, Mixin)

Class composition method. Mixin methods into Constructor.prototype.

If Mixin is a constructor function (class), then mixin all static properties into Constructor, and everything on Mixin.prototype to Constructor.prototype. If Mixin is just a Plain Old Object, then simply add the members of Mixin to Contructor.prototype.

getArguments(f) and getName(f)

Get the name of all the parameters or name for function f.

var getArguments = require('typedef').getArguments;
var getName      = require('typedef').getName;
 
function foo(a, b, c)
{
  ...
}
 
getArguments(foo);
// ['a', 'b', 'c']
 
getName(foo);
// 'foo'

Tern Support

The library files are all decorated with JSDoc3-style annotations that work great with the Tern code inference system. Combined with the Node plugin (see this project's .tern-project file), you can have intelligent autocomplete for methods in this library.

Testing

Testing is done with Tape and can be run with the command npm test.

Automated CI cross-browser testing is provided by Testling.

License

Copyright 2014 Brandon Valosek

Typedef is released under the MIT license.

Package Sidebar

Install

npm i typedef

Weekly Downloads

346

Version

1.1.0

License

MIT

Last publish

Collaborators

  • bvalosek