What's wrong with Equal? returning FALSE when values are different??? You want to compare values or types? To compare if two variants are of the same (sub)type, you have to compare type descriptors of the data. You can't compare type descriptors directly (array of I16) because it also contains information on data name (from control label) that is not relevant for type comparison.
Using LabVIEW Data Tools <b>Get Default Data from TD</b> you could set both variant to compare to their default values and then compare them: if they are not equal, the type is different. You could also use <b>Get TDEnum from Data</b> (that returns the data type as an enum) to compare datatypes and recurse into elements for arrays and clusters. A compare type VI would be a nice addition to LabVIEW Data Tools.