p.location-badge. exported from angular2/di defined in angular2/src/di/binding.js (line 315) :markdown Helper class for the bind function. .l-main-section h2 Members .l-sub-section h3 constructor pre.prettyprint code. constructor(token) :markdown .l-sub-section h3 toAlias pre.prettyprint code. toAlias(aliasToken) :markdown Binds a key to the alias for an existing key. An alias means that we will return the same instance as if the alias token was used. (This is in contrast to `toClass` where a separet instance of `toClass` will be returned.) Becuse `toAlias` and `toClass` are often confused, the example contains both use cases for easy comparison. ```javascript class Vehicle {} class Car extends Vehicle {} var injectorAlias = Injector.resolveAndCreate([ Car, bind(Vehicle).toAlias(Car) ]); var injectorClass = Injector.resolveAndCreate([ Car, bind(Vehicle).toClass(Car) ]); expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car)); expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true); expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car)); expect(injectorClass.get(Vehicle) instanceof Car).toBe(true); ``` .l-sub-section h3 toAsyncFactory pre.prettyprint code. toAsyncFactory(factoryFunction:Function, dependencies:List = null) :markdown Binds a key to a function which computes the value asynchronously. ```javascript var injector = Injector.resolveAndCreate([ bind(Number).toAsyncFactory(() => { return new Promise((resolve) => resolve(1 + 2)); }), bind(String).toFactory((v) => { return "Value: " + v; }, [String]) ]); injector.asyncGet(Number).then((v) => expect(v).toBe(3)); injector.asyncGet(String).then((v) => expect(v).toBe('Value: 3')); ``` The interesting thing to note is that event though `Number` has an async factory, the `String` factory function takes the resolved value. This shows that the Injector delays executing of the `String` factory until after the `Number` is resolved. This can only be done if the `token` is retrieved using the the `asyncGet` API in the Injector. .l-sub-section h3 toClass pre.prettyprint code. toClass(type:Type) :markdown Binds an interface to an implementation / subclass. Because `toAlias` and `toClass` are often confused, the example contains both use cases for easy comparison. ```javascript class Vehicle {} class Car extends Vehicle {} var injectorClass = Injector.resolveAndCreate([ Car, bind(Vehicle).toClass(Car) ]); var injectorAlias = Injector.resolveAndCreate([ Car, bind(Vehicle).toAlias(Car) ]); expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car)); expect(injectorClass.get(Vehicle) instanceof Car).toBe(true); expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car)); expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true); ``` .l-sub-section h3 toFactory pre.prettyprint code. toFactory(factoryFunction:Function, dependencies:List = null) :markdown Binds a key to a function which computes the value. ```javascript var injector = Injector.resolveAndCreate([ bind(Number).toFactory(() => { return 1+2; }}), bind(String).toFactory((v) => { return "Value: " + v; }, [String] }) ]); expect(injector.get(Number)).toEqual(3); expect(injector.get(String)).toEqual('Value: 3'); ``` .l-sub-section h3 toValue pre.prettyprint code. toValue(value) :markdown Binds a key to a value. ```javascript var injector = Injector.resolveAndCreate([ bind(String).toValue('Hello') ]); expect(injector.get(String)).toEqual('Hello'); ``` .l-sub-section h3 token :markdown