所以在Typescript的generics guide的末尾有这段代码
class BeeKeeper {
hasMask: boolean = true;
}
class ZooKeeper {
nametag: string = 'abc';
}
class Animal {
numLegs: number = 123;
}
class Bee extends Animal {
keeper: BeeKeeper = new BeeKeeper();
}
class Lion extends Animal {
keeper: ZooKeeper = new ZooKeeper();
}
function createInstance<A extends Animal>(c: new () => A): A {
return new c();
}
createInstance(Lion).keeper.nametag; // typechecks!
createInstance(Bee).keeper.hasMask; // typechecks!
该程序只是创建一些类,然后定义一个方法来创建给定类的实例。但是,当我们尝试与变量c
进行比较时会出现问题。例如,如果我们要检查c == Lion
,则Typescript会引发错误(playground link)。任何人都知道在进行类型检查的同时还能进行类型检查的方法吗?
您可以使用if(c === instanceof Lion)
进行检查
您是否尝试过以下方法?if(c instanceof Lion) {
希望我能正确理解您的问题。