Last active
August 29, 2015 13:56
-
-
Save psulek/9253129 to your computer and use it in GitHub Desktop.
Enum equal for object prototype usable in Typescript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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