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'.

  1. 您必须导出界面才能导入:

    // file interfaces.ts
    export interface Warrior {
        fight(): string;
    }
    
  2. 您在 inversify.config.ts 中的导入应该是:

    import { TYPES } from "./types";
    
  3. 确保您确实安装了库 (npm install inversify)。错误 Untyped function calls may not accept type arguments 是由于缺少类型信息。

你的例子是干净和正确的所有你需要做的就是在你的 package.json

中升级你的打字稿版本
"devDependencies": {
   "typescript": "3.9.3"
}