Skip to content

Instantly share code, notes, and snippets.

@tygern
Created August 19, 2016 20:06
Show Gist options
  • Save tygern/6e1046151c68d1de838f810231c00f7e to your computer and use it in GitHub Desktop.
Save tygern/6e1046151c68d1de838f810231c00f7e to your computer and use it in GitHub Desktop.
Typesafe providers for Angular 2
export class SafeToken<T> {
constructor(private name: string){}
toString() {
return `Token ${this.name}`
}
}
export function safeProvide<T>(token:SafeToken<T>) {
return {
useClass<U extends T>(Klass:{new(...args:any[]):U;}) {
return {provide: token, useClass: Klass};
},
useValue<U extends T>(value:U) {
return {provide: token, useValue: value};
},
useFactory<U extends T>(factory:(...args:any[]) => U) {
return {provide: token, useFactory: factory};
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment