Types Haxe:检查动态类型是否为对象

Types Haxe:检查动态类型是否为对象,types,haxe,Types,Haxe,我需要检查vara:Dynamic={}是否是一个对象。所以我期待着: var a : Dynamic; a = 17.2; check( a ); // false a = "test"; check( a ); // false a = [1,2,3]; check( a ); // false a = 99; check( a ); // false a = {b:1, c:2}; check( a ); // true 这里是我的示例(与上面略有不同,因为它检查多个

我需要检查
vara:Dynamic={}
是否是一个对象。所以我期待着:

var a : Dynamic;
a = 17.2; check( a ); // false
a = "test"; check( a ); // false
a = [1,2,3]; check( a ); // false
a = 99; check( a ); // false
a = {b:1, c:2}; check( a ); // true
这里是我的示例(与上面略有不同,因为它检查多个类型并返回一个枚举)。除对象线外,所有操作都有效:

function check( v : Dynamic ) : TokenType {
    if ( Std.is(v, std.Array) ) return TTArray;
    else if ( Std.is(v, std.String) ) return TTString;
    else if ( Std.is(v, Object) ) return TTObject; // What do I need here?
    else if ( Math.isNaN( v ) ) return TTUnknown;
    else if ( Std.is(v, StdTypes.Float) ) return TTNumber;
    else if ( Std.is(v, StdTypes.Int) ) return TTNumber;
    return TTUnknown;
}
注意-这是一个大得多的类的小片段。类型必须是
动态
(例如,我不能使用
任何


提前谢谢

这里有两个选项:


对于您的用例,前者可能更可靠一些,因为类是独立的。例如,在JS目标上,Type.typeof(“string”)将导致
TClass(string)
,而使用
Reflect.isObject()
只需获得
true
,这里有两个选项:

对于您的用例,前者可能更可靠一些,因为类是独立的。例如,在JS目标上,Type.typeof(“string”)将导致
TClass(string)
,而您只需使用
Reflect.isObject()
获得
true