gpt4 book ai didi

javascript - instanceof 函数参数在 Typescript/Angular 中返回 false

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:40 24 4
gpt4 key购买 nike

如果对象作为参数传递到我的函数中,我正在尝试找出如何获取该对象的类型。

例如你有以下代码

getTypeOfAnimal(animal){
console.log(animal instanceof Cat)
console.log(animal instanceof Bear)
}

animal 可以是 Cat 或 Bear 的实例。从我的表单传入的动物总是返回 false(即使对象的结构似乎与猫或熊中的一个匹配)。

有没有办法正确获取类型?

最佳答案

问题的根源是这一行

also if the Object's structure seems to match one of a Cat or a Bear

对象结构在这里无关紧要。 instanceof 检查对象是否使用 CatBear 的构造函数创建,例如new Cat()(实际上,如果两者都扩展了 Animal,那么 instanceof Animal 对两者来说都是 true)。

通常 TypeScript 使用 duck typing解决接口(interface)是否匹配对象结构,这就是相似对象结构可以发挥作用的地方。然而 instanceof 是 JavaScript(因为它是在运行时执行的),所以 TypeScript 不能做更多的事情。这就是为什么它不像您预期​​的那样工作。

关于javascript - instanceof 函数参数在 Typescript/Angular 中返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com