我试图找出如何获取对象的类型(如果它作为参数传递到我的函数中)。
例如您有以下代码
getTypeOfAnimal(animal){
console.log(animal instanceof Cat)
console.log(animal instanceof Bear)
}
动物可以是猫或熊的实例。从我的表单传入的动物总是返回 false(如果对象的结构似乎与猫或熊之一匹配)。
有没有办法正确获取类型?
最佳答案
问题的根源是这一行
also if the Object's structure seems to match one of a Cat or a Bear
对象结构在这里并不重要。 instanceof
检查对象是否是使用 Cat
或 Bear
的构造函数创建的,例如new Cat()
(实际上,如果两者都扩展 Animal
,那么 instanceof Animal
对于两者来说都将是 true
)。
通常 TypeScript 使用 duck typing判断接口(interface)是否与对象结构匹配,这就是类似的对象结构可以工作的地方。然而 instanceof
是 JavaScript(因为是在运行时执行的),所以 TypeScript 在那里不能做更多的事情。这就是为什么它不能像您预期的那样工作。
关于javascript - 在 Typescript/Angular 中,instanceof 函数参数返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629559/