TypeScript 中的类类型检查

新手上路,请多包涵

在 ActionScript 中,可以使用 is 运算符 在运行时检查类型:

 var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject);// true
trace(mySprite is IEventDispatcher); // true

是否可以检测变量(扩展或)是否是某个类或与 TypeScript 的接口?

我在语言规范中找不到任何关于它的信息。在使用类/接口时它应该在那里。

原文由 Mark Knol 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
1 个回答

4.19.4 instanceof 运算符

instanceof 运算符要求左操作数为 Any 类型、对象类型或类型参数类型,右操作数为 Any 类型或“函数”接口类型的子类型。结果总是布尔原始类型。

所以你可以使用

mySprite instanceof Sprite;

请注意,此运算符也在 ActionScript 中,但不应再在那里使用:

is 运算符是 ActionScript 3.0 的新功能,允许您测试变量或表达式是否是给定数据类型的成员。在先前版本的 ActionScript 中,instanceof 运算符提供了此功能,但在 ActionScript 3.0 中,instanceof 运算符不应用于测试数据类型成员资格。应该使用 is 运算符而不是 instanceof 运算符进行手动类型检查,因为表达式 x instanceof y 仅检查 x 的原型链是否存在 y(在 ActionScript 3.0 中,原型链不提供继承层次结构)。

TypeScript 的 instanceof 也有同样的问题。由于它是一种仍在开发中的语言,我建议您提出这种设施的建议。

也可以看看:

原文由 Zeta 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏