Typescript通用参数比较

问题描述 投票:0回答:2

所以在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)。任何人都知道在进行类型检查的同时还能进行类型检查的方法吗?

typescript
2个回答
0
投票

您可以使用if(c === instanceof Lion)进行检查


0
投票

您是否尝试过以下方法?if(c instanceof Lion) {希望我能正确理解您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.