0.1.3 • Published 1 year ago

multiple-extend v0.1.3

Weekly downloads
8
License
MIT
Repository
github
Last release
1 year ago

multiple-extend

NPM Version NPM Downloads Build Status Test Coverage Dependencies DevDependencies

About

This is a helper module for Javascript that allows multiple Classes inheritance.

Installation

$ npm install multiple-extend [--save]

Usage

const classes = require('multiple-extend');

class Character {
  constructor(name) {
    this.name = name;
    this.distance = 0;
    this.canWalk = true;
  }

  walk(x) {
    return this.distance += x;
  }
}

class Jumper {
  constructor() {
    this.distance = 0;
    this.canJump = true;
  }

  jump(x) {
    return this.distance += x;
  }
}

class Diver {
  constructor() {
    this.deep = 0;
    this.canDive = true;
  }

  dive(x) {
    return this.deep += x;
  }
}

class SuperCharacter extends classes(Character, Jumper, Diver) {
}

const player = new SuperCharacter('player1');
console.log(player.name); // Prints out "player1"

if (player.canWalk) // Can walk and will walk 5
  player.walk(5);

if (player.canJump) // Can jump and will jump 1
  player.jump(1);

if (player.canDive) // Can dive and will dive 1
  player.dive(1);

Argument pass-through

You can also define which arguments will be sent to subclass constructors

class SuperCharacter extends classes([Character, null], [Jumper, 1, 2], [Diver, [3, null]]) {
  constructor(distanceMin, distanceMax, ...args) {
    super(distanceMin, distanceMax, ...args);
    this.name = 'player1';
  }
}

In the example above Character constructor will be no argument, Jumper constructor will be called with arguments at index 1 and 2 (distanceMin, distanceMax), Diver constructor will be called with arguments at index from 3 to Last.

Checking implementations

You can check if extended class and its instance has implemented any class.

const classes = require('multiple-extend');
const Implemented = classes.Implemented; // Special symb ol

class SuperCharacter extends classes(Character, Jumper, Diver) {
}

if (SuperCharacter[Implemented](Jumper))
  console.log('Jumper implemented');

// You can also check using class names
if (SuperCharacter[Implemented]('Diver'))
  console.log('Diver implemented');

Node Compatibility

  • node >= 6.0;

License

MIT

0.1.3

1 year ago

0.1.2

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.1

5 years ago