3.2.0 • Published 6 years ago

supertype v3.2.0

Weekly downloads
474
License
-
Repository
github
Last release
6 years ago

CircleCI npm version

SuperType

Description

SuperType is a type system for JavaScript that supports:

  • Classical inheritence

  • Mixins

  • Composition including collections

Installation

Include lib/index.js for use in the browser. Install on node via npm:

npm install supertype

It is automatically installed as a dependency for Amorphic

Example

Classes are defined as "templates".

ObjectTemplate = require('supertype');

Animal = ObjectTemplate.create("Animal",
{
    name: {type: String},
    isMammal: {type: Boolean, value: true},
    legs: {type: Number, value: 2}
});

Lion = Animal.extend("Lion",
{
    init: function () {
        Animal.call(this);
        this.name = "Lion";
        this.legs = 4;
    },
    canRoar: function () {return true}
});

Bear = Animal.extend("Bear",
{
    init: function () {
        Animal.call(this);
        this.name = "Bear";
    },
    canHug: function () {return true}
});

Ark = ObjectTemplate.create("Ark",
{
    animals: {type: Array, of: Animal, value: []},
    board: function (animal) {
        animal.ark = this;
        this.animals.push(animal)
    }
});
Animal.mixin(
{
    ark:    {type: Ark}
});

You create objects using new:

var ark1 = new Ark();
ark1.board(new Lion());
ark1.board(new Bear());

var ark2 = new Ark();
ark2.board(new Lion());
ark2.board(new Bear());

Because SuperType knows about the interrelationships between your objects you can serialize and de-serialize even though you have circular references:

var serialArk1 = ark1.toJSONString();
var serialArk2 = ark2.toJSONString();
ark1 = Ark.fromJSON(serialArk1);
ark2 = Ark.fromJSON(serialArk2);

License

SuperType is licensed under the MIT license

3.2.0

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

2.2.7

7 years ago

2.2.6

7 years ago

2.2.5

7 years ago

2.2.4

7 years ago

2.2.3

7 years ago

2.2.2

7 years ago

2.2.1

7 years ago

2.2.0

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.5.1

8 years ago

1.5.0

8 years ago

1.4.9

8 years ago

1.4.8

8 years ago

1.4.7

8 years ago

1.4.6

8 years ago

1.4.5

8 years ago

1.4.4

8 years ago

1.4.3

8 years ago

1.3.5

8 years ago

1.3.4

8 years ago

1.3.3

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.4

8 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0-rc.1

9 years ago

1.0.0-beta.1

9 years ago

0.1.45

9 years ago

0.1.43

9 years ago

0.1.42

9 years ago

0.1.41

9 years ago

0.1.40

9 years ago

0.1.39

9 years ago

0.1.38

9 years ago

0.1.37

9 years ago

0.1.36

9 years ago

0.1.35

9 years ago

0.1.34

10 years ago

0.1.33

10 years ago

0.1.32

10 years ago

0.1.31

10 years ago

0.1.30

10 years ago

0.1.29

10 years ago

0.1.28

10 years ago

0.1.27

10 years ago

0.1.26

10 years ago

0.1.25

10 years ago

0.1.24

10 years ago

0.1.23

10 years ago

0.1.22

10 years ago

0.1.21

10 years ago

0.1.20

10 years ago

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago