InversifyJS:无法使用接口绑定
InversifyJS : can not bind using interface
我正在尝试使用 inversify JS 来注入对 TypeScript App 的依赖。我首先使用 https://github.com/inversify/InversifyJS 页面的示例:
// file interfaces.ts
interface Warrior {
fight(): string;
}
// file types.ts
const TYPES = {
Warrior: Symbol("Warrior")
};
export { TYPES };
// file entities.ts
import { injectable, inject } from "inversify";
import "reflect-metadata";
import { Warrior } from "./interfaces"
import { TYPES } from "./types";
@injectable()
class WarriorImpl implements Warrior {
public constructor(){
}
public fight() { return "I fight"; }
}
export { WarriorImpl };
// file inversify.config.ts
import { Container } from "inversify";
import TYPES from "./types";
import { Warrior } from "./interfaces";
import { WarriorImpl } from "./entities";
const myContainer = new Container();
myContainer.bind<Warrior>(TYPES.Warrior).to(WarriorImpl);
export { myContainer };
我应用了示例中提供的内容,但 Vscode 和 tsc
在绑定行失败,显示此错误 [ts] Untyped function calls may not accept type arguments. [ts] Cannot find name 'Warrior'.
您必须导出界面才能导入:
// file interfaces.ts
export interface Warrior {
fight(): string;
}
您在 inversify.config.ts
中的导入应该是:
import { TYPES } from "./types";
确保您确实安装了库 (npm install inversify
)。错误 Untyped function calls may not accept type arguments
是由于缺少类型信息。
你的例子是干净和正确的所有你需要做的就是在你的 package.json
中升级你的打字稿版本
"devDependencies": {
"typescript": "3.9.3"
}
我正在尝试使用 inversify JS 来注入对 TypeScript App 的依赖。我首先使用 https://github.com/inversify/InversifyJS 页面的示例:
// file interfaces.ts
interface Warrior {
fight(): string;
}
// file types.ts
const TYPES = {
Warrior: Symbol("Warrior")
};
export { TYPES };
// file entities.ts
import { injectable, inject } from "inversify";
import "reflect-metadata";
import { Warrior } from "./interfaces"
import { TYPES } from "./types";
@injectable()
class WarriorImpl implements Warrior {
public constructor(){
}
public fight() { return "I fight"; }
}
export { WarriorImpl };
// file inversify.config.ts
import { Container } from "inversify";
import TYPES from "./types";
import { Warrior } from "./interfaces";
import { WarriorImpl } from "./entities";
const myContainer = new Container();
myContainer.bind<Warrior>(TYPES.Warrior).to(WarriorImpl);
export { myContainer };
我应用了示例中提供的内容,但 Vscode 和 tsc
在绑定行失败,显示此错误 [ts] Untyped function calls may not accept type arguments. [ts] Cannot find name 'Warrior'.
您必须导出界面才能导入:
// file interfaces.ts export interface Warrior { fight(): string; }
您在
inversify.config.ts
中的导入应该是:import { TYPES } from "./types";
确保您确实安装了库 (
npm install inversify
)。错误Untyped function calls may not accept type arguments
是由于缺少类型信息。
你的例子是干净和正确的所有你需要做的就是在你的 package.json
"devDependencies": {
"typescript": "3.9.3"
}