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

标签 javascript angular typescript

我试图找出如何获取对象的类型(如果它作为参数传递到我的函数中)。

例如您有以下代码

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 检查对象是否是使用 CatBear 的构造函数创建的,例如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/

相关文章:

javascript - 如何在轮播 Bootstrap 中运行每张幻灯片?

Angular 路由器 : Why do we need both: guards and events?

javascript - 在 setTimeout() 的回调中获取计时器 ID?

javascript - 错误 TS1112 : A class member cannot be declared optional

reactjs - Redux 的 combineReducers 和 TypeScript

php - 执行代码后重定向

javascript - 使用更新的偏移位置实现点击事件

javascript - 如何通过 javascript 最可靠/简单地访问 <html> 元素?

angular - 如何使用 Bazel 将 Angular 应用程序集成到 Monorepo 中?

typescript - TypeScript 中的内部模块和外部模块有什么区别?