Skip to content

Instantly share code, notes, and snippets.

@Quramy
Created May 4, 2016 11:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Quramy/522c1bc3a40931a0045ba68da19dd237 to your computer and use it in GitHub Desktop.
Save Quramy/522c1bc3a40931a0045ba68da19dd237 to your computer and use it in GitHub Desktop.
inversifyjs-demo
import 'reflect-metadata';
import {injectable, Kernel} from 'inversify';
// 注入したい振る舞いの定義
@injectable()
abstract class AwesomeService {
abstract greeting(): string;
}
// 振る舞いに対応した実装
@injectable()
class ConcreteAwesomeService extends AwesomeService {
greeting() {
return "It's a concrete awesome service!";
}
}
// 注入される側のclass
@injectable()
class Main {
constructor(private service: AwesomeService) {}
run() {
console.log(this.service.greeting());
}
}
// DIコンテナの準備
const kernel = new Kernel();
kernel.bind<AwesomeService>(AwesomeService).to(ConcreteAwesomeService);
kernel.bind<Main>(Main).to(Main);
// コンテナからインスタンスを取得
const main: Main = kernel.get<Main>(Main);
main.run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment