您好有一个带有 inversify 和 requirejs 的打字稿测试项目,可以从以下位置克隆:https ://github.com/ahedreville/ioctest.git
他的 package.json 如下
{
"name": "ioctest",
"version": "1.0.0",
"description": "Test of an IoC with Inversify and RequireJS",
"scripts": {
"start": "http-server"
},
"author": "Alexandre Hedreville",
"license": "ISC",
"devDependencies": {
"http-server": "^0.10.0"
},
"dependencies": {
"@types/requirejs": "^2.1.30",
"inversify": "^4.3.0",
"reflect-metadata": "^0.1.10",
"requirejs": "^2.3.4"
}
}
您可以通过以下命令在浏览器上运行该项目...
mkdir temp
cd temp
git clone https://github.com/ahedreville/ioctest.git
cd ioctest
c:\temp\ioctest>tree /F /A
...
C:.
| app.main.js
| index.html
| package.json
| README.md
| tsconfig.json
|
\---src
App.js
App.js.map
App.ts
ioc_config.js
ioc_config.js.map
ioc_config.ts
Question.js
Question.js.map
Question.ts
Question2.js
Question2.js.map
Question2.ts
Types.js
Types.js.map
Types.ts
npm install
npm start
http://localhost:8080
如您所见,打开浏览器开发者控制台日志,接口 IProblem 被解析为 Question2 类,正如我们在类 ioc_config.ts 上要求的那样
Question2类如下
import { injectable } from "inversify";
import { IProblem } from './Types';
@injectable()
export class Question2 implements IProblem {
public readonly factor: number = 0;
public count: number = 0;
public answer: number = 0;
}
但是如果我更改 ioc_config.ts 上的目标分辨率类
更改 ioc_config.ts 类如下
import { Container } from 'inversify';
import { sTypes, IProblem } from './Types';
import { Question } from './Question';
import { Question2 } from './Question2';
export const container = new Container();
//container.bind<IProblem>(sTypes.IProblem).to(Question2);
container.bind<IProblem>(sTypes.IProblem).to(Question);
现在 IProblem 接口的解析将失败,因为 Question.ts 有一个构造函数,它期望传递一些值。
问题类如下
import { injectable } from "inversify";
import { IProblem } from './Types';
@injectable()
export class Question implements IProblem {
public answer: number = 0;
constructor(public readonly factor: number, public readonly count: number) {
}
}
我该如何解决这个问题(我是 inversify 的新手)并在解析时将一些值传递给构造函数?