/// 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.IObservableArray = mobservable.makeReactive([1,2]); ar.observe((d:Mobservable.IArrayChange|Mobservable.IArraySplice) => { console.log(d.type); }); var ar2:Mobservable.IObservableArray = mobservable([1,2]); ar2.observe((d:Mobservable.IArrayChange|Mobservable.IArraySplice) => { console.log(d.type); }); var x:Mobservable.IObservableValue = mobservable(3); }