module fb { export class Map { $promise: ng.IPromise; $resolved: boolean; [num: number]: T; constructor(data: any, type: any, key: string) { var self = this; if (data.$promise) { self.$promise = data.$promise; self.$promise.then(function (res) { self.init(res, type, key); self.$resolved = true; }); } else { self.init(data, type, key); var $injector = angular.injector(['ng']); $injector.invoke(['$q', function ($q: ng.IQService) { var def = $q.defer(); self.$promise = def.promise; def.resolve(data); }]); self.$resolved = true; } } init(initData: T[], type: any, key: string) { var self = this; for (var i: number = 0; i < initData.length; i++) { self[parseInt(initData[i][key])] = new type(initData[i]); } } } }