var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject);// true
trace(mySprite is IEventDispatcher); // true
instanceof
运算符要求左操作数的类型为Any、对象类型或类型参数类型,右操作数的类型为Any或“function”接口类型的子类型。结果总是布尔基元类型的。
所以你可以用
mySprite instanceof Sprite;
请注意,此操作符也在ActionScript中,但不应再在ActionScript中使用:
is运算符是ActionScript3.0的新选项,它允许您测试变量或表达式是否是给定数据类型的成员。在ActionScript的早期版本中,instanceof运算符提供了此功能,但在ActionScript3.0中,instanceof运算符不应用于测试数据类型成员资格。应该使用is运算符而不是instanceof运算符进行手动类型检查,因为表达式x instanceof y只是检查x的原型链是否存在y(并且在ActionScript 3.0中,原型链并不提供继承层次结构的完整图片)。
TypeScript的instanceof
也存在同样的问题。由于这是一种仍在发展中的语言,我建议你提出一个关于这种设施的建议。
另见:
这个问题直接类似于使用TypeScript进行类类型检查
你能告诉我如何在typescript+angular中检查变量的类型吗?
编辑:OK,在typescript规范中有详细说明:类型断言
数字(number) 字符串(string) 数组(array) 元组(tuple) 任意值(any) null 和 undefined void never 其中元组、枚举、任意值、void和never类型是 TypeScript 特有的。 元组类型 元组类型用于表示已知元素类型和数量的数组,各类型不必相同。 枚举类型 枚举值默认从 0 开始,往后逐个加 1(递增);也就是说,week 中的 M
TypeScript中的这些语句(与)之间有什么区别?
问题内容: 这个问题是使用TypeScript进行类类型检查的直接类比 我需要在运行时找出类型为any的变量是否实现了接口。这是我的代码: 如果在打字机游乐场输入此代码,则最后一行将被标记为错误,“名称A在当前作用域中不存在”。但这不是事实,该名称确实存在于当前范围内。我什至可以将变量声明更改为无编辑者的抱怨。浏览完网络并在SO上找到另一个问题后,我将接口更改为一个类,但是后来我无法使用对象文字来