1

我正在尝试使用 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'.

4

2 回答 2

1

你的例子是干净和正确的,你所要做的就是升级你的打字稿版本package.json

"devDependencies": {
   "typescript": "3.9.3"
}
于 2020-05-20T16:50:55.870 回答
0
  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是由于缺少类型信息。

于 2017-09-06T16:30:58.380 回答