Skip to content

Instantly share code, notes, and snippets.

@psulek
Last active August 29, 2015 13:56
Show Gist options
  • Save psulek/9253129 to your computer and use it in GitHub Desktop.
Save psulek/9253129 to your computer and use it in GitHub Desktop.
Enum equal for object prototype usable in Typescript
var States;
(function (States) {
States[States["New"] = 1] = "New";
States[States["Active"] = 2] = "Active";
States[States["Disabled"] = 3] = "Disabled";
})(States || (States = {}));
Object.prototype.enumEqual = function(enumType, enumItem) {
debugger;
var isNum = function(v) { return !isNaN(parseInt(v)); };
var enumValueToCompare = enumItem;
var thisIsNumber = isNum(this);
if (thisIsNumber)
{
if (!isNum(enumItem)) // enumItem is NOT number
enumValueToCompare = enumType[enumItem];
}
else{ // this is NOT number
if (isNum(enumItem)) { // enumItem IS number
var enumMember = enumType[enumItem];
if (!isNum(enumMember)) // enumMember is NOT number
enumValueToCompare = enumMember;
}
else {
// do nothing (same as default: enumValueToCompare = enumItem)
}
}
return this == enumValueToCompare;
};
var result = '';
result += "Active".enumEqual(States, States[States.Active]) + ' | ';
result += "Active".enumEqual(States, States.Active) + ' | ';
result += "Active".enumEqual(States, 2) + ' | ';
result += "Active".enumEqual(States, "Active") + ' | ';
result += States.Active.enumEqual(States, "Active") + ' | ';
var num = 2;
result += num.enumEqual(States, States[States.Active]) + ' | ';
result += num.enumEqual(States, States.Active) + ' | ';
result += num.enumEqual(States, 2) + ' | ';
result += num.enumEqual(States, "Active") + ' | ';
alert(result);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment