DefinitelyTyped/mobservable/mobservable-tests.ts
2017-02-23 07:15:16 -08:00

56 lines
1.4 KiB
TypeScript

import mobservable = require('mobservable');
import {observable} from "mobservable";
var v = mobservable(3);
v.observe(() => {});
var a = mobservable([1, 2, 3]);
class Order {
@observable price: number = 3;
@observable amount: number = 2;
@observable orders: string[] = [];
@observable get total() {
return this.amount * this.price * (1 + this.orders.length);
}
}
export function testObservable() {
var a = mobservable(3);
var b = mobservable(() => a() * 2);
}
export function testAnnotations() {
var order1totals: number[] = [];
var order1 = new Order();
var order2 = new Order();
var disposer = mobservable.observe(() => {
order1totals.push(order1.total);
});
order2.price = 4;
order1.amount = 1;
order2.orders.push('bla');
order1.orders.splice(0, 0, 'boe', 'hoi');
disposer();
order1.orders.pop();
};
export function testTyping() {
var ar: mobservable.ObservableArray<number> = mobservable.makeReactive([1, 2]);
ar.observe((d: mobservable.ArrayChange<number> | mobservable.ArraySplice<number>) => {
console.log(d.type);
});
var ar2: mobservable.ObservableArray<number> = mobservable([1, 2]);
ar2.observe((d: mobservable.ArrayChange<number> | mobservable.ArraySplice<number>) => {
console.log(d.type);
});
var x: mobservable.ObservableValue<number> = mobservable(3);
}