我试图将依赖项注入添加到一个普通的Typescript项目中,发现一个名为inversify的npm包。
因此,看一下这些代码中的示例:
import { Container, injectable, inject } from "inversify";
@injectable()
class Katana {
public hit() {
return "cut!";
}
}
@injectable()
class Shuriken {
public throw() {
return "hit!";
}
}
@injectable()
class Ninja implements Ninja {
private _katana: Katana;
private _shuriken: Shuriken;
public constructor(katana: Katana, shuriken: Shuriken) {
this._katana = katana;
this._shuriken = shuriken;
}
public fight() { return this._katana.hit(); };
public sneak() { return this._shuriken.throw(); };
}
var container = new Container();
container.bind<Ninja>(Ninja).to(Ninja);
container.bind<Katana>(Katana).to(Katana);
container.bind<Shuriken>(Shuriken).to(Shuriken);
忍者班实施忍者班意味着什么?
class Ninja implements Ninja {
在该示例中,容器将类绑定到自身,这与此相关吗?
var container = new Container();
container.bind<Ninja>(Ninja).to(Ninja);
最佳答案
我认为这没有任何意义,也不会增加任何类型安全性。这只是编译器如何执行类型检查的一个怪癖。在类已完全键入后检查工具。因此,编译器可以检查涉及类本身的implements
子句。
在这种情况下,在implements
子句中使用该类不是特别有用(因为您基本上是在说该类应始终执行自身)。我们可以使用此功能来做有用的事情,例如,我们可以确保类成员是特定类型的
class Test implements Record<keyof Test, () => void> {
test() { }
}
class Test2 implements Record<keyof Test2, () => void>{
test(a: number) { } // error
}
关于javascript - 当类在Typescript中实现自身时,这意味着什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54306190/