p.location-badge. exported from angular2/di defined in angular2/src/di/binding.ts (line 37) :markdown Describes how the Injector should instantiate a given token. See bind. ## Example ```javascript var injector = Injector.resolveAndCreate([ new Binding(String, { toValue: 'Hello' }) ]); expect(injector.get(String)).toEqual('Hello'); ``` .l-main-section h2 Members .l-sub-section h3 constructor pre.prettyprint code. constructor(token: any, {toClass, toValue, toAlias, toFactory, deps}: {toClass?: Type, toValue?: any, toAlias?: any, toFactory?: Function, deps?: List<any>}) :markdown .l-sub-section h3 token :markdown Token used when retrieving this binding. Usually the `Type`. .l-sub-section h3 toClass :markdown Binds an interface to an implementation / subclass. Becuse `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, new Binding(Vehicle, { toClass: Car }) ]); var injectorAlias = Injector.resolveAndCreate([ Car, new Binding(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 toValue :markdown Binds a key to a value. ```javascript var injector = Injector.resolveAndCreate([ new Binding(String, { toValue: 'Hello' }) ]); expect(injector.get(String)).toEqual('Hello'); ``` .l-sub-section h3 toAlias :markdown Binds a key to the alias for an existing key. An alias means that Injector returns the same instance as if the alias token was used. This is in contrast to `toClass` where a separate instance of `toClass` is 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, new Binding(Vehicle, { toAlias: Car }) ]); var injectorClass = Injector.resolveAndCreate([ Car, new Binding(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 toFactory :markdown Binds a key to a function which computes the value. ```javascript var injector = Injector.resolveAndCreate([ new Binding(Number, { toFactory: () => { return 1+2; }}), new Binding(String, { toFactory: (value) => { return "Value: " + value; }, dependencies: [Number] }) ]); expect(injector.get(Number)).toEqual(3); expect(injector.get(String)).toEqual('Value: 3'); ``` .l-sub-section h3 dependencies :markdown Used in conjunction with `toFactory` and specifies a set of dependencies (as `token`s) which should be injected into the factory function. ```javascript var injector = Injector.resolveAndCreate([ new Binding(Number, { toFactory: () => { return 1+2; }}), new Binding(String, { toFactory: (value) => { return "Value: " + value; }, dependencies: [Number] }) ]); expect(injector.get(Number)).toEqual(3); expect(injector.get(String)).toEqual('Value: 3'); ``` .l-sub-section h3 resolve pre.prettyprint code. resolve() :markdown Converts the Binding into ResolvedBinding. Injector internally only uses ResolvedBinding, Binding contains convenience binding syntax.