Skip to content

justindujardin/observable.ts

Repository files navigation

observable.ts Build Status Coverage Status

A reference implementation of the observable spec in Typescript.

Installation

Install from bower

bower install observable.ts

Then add a script link to your page

<head>
  ...
  <script src="bower_components/observable.ts/lib/observable.min.js"></script>
</head>

Example

Define a game trigger object with enter and leave observables.

/// <reference path="bower_components/observable.ts/lib/observable.d.ts"/>

interface ITrigger {
  enter: obs.Observable;
  leave: obs.Observable;
  doEnter(obj:IPlayer):void;
  doLeave(obj:IPlayer):void;
  destroy():void;
}
interface IPlayer {
  name: string;
  health: number;
}

var player:IPlayer = {
  name: 'MorTon',
  health: 100
};
var trigger:ITrigger = {
  enter: new obs.Observable(),
  leave: new obs.Observable(),
  doEnter: (obj:IPlayer) => trigger.enter.next(obj),
  doLeave: (obj:IPlayer) => trigger.leave.next(obj),
  destroy: () => {
    trigger.enter.return();
    trigger.leave.return();
  }
};

trigger.enter.subscribe({
  next: (value:IPlayer) => {
    var damage = 50;
    value.health -= damage;
    console.log(value.name + ' entered the trigger and took ' + damage + ' damage!');
  }
});
trigger.leave.subscribe({
  next: (value:IPlayer) => {
    console.log(value.name + ' exited the trigger with ' + value.health + ' health remaining.');
  }
});

trigger.doEnter(player);
trigger.doLeave(player);
trigger.destroy();

Outputs:

MorTon entered the trigger and took 50 damage!
MorTon exited the trigger with 50 health remaining.

Browser Support

The observable.ts test suite is run against a number of browsers to ensure it's compatible.

Sauce Test Status

License


CC0
To the extent possible under law, Justin DuJardin has waived all copyright and related or neighboring rights to observable.ts. This work is published from: United States.

About

A tiny implementation of the observable spec in Typescript.

Resources

License

Stars

Watchers

Forks

Packages

No packages published