Code below,the parameter gender is enum type,the value must be one of ["male","female"],but I want to use it simply like this judgeGender("male"),how can I make it?
function judgeGender(gender){
//......
}
What you could do is accept a String and check that it exists in the Enum, like so:
enum Gender {Male, Female};
function validGender(c: String) {
if(enumHasValue(Gender, c)) {
document.write(`valid gender: ${c}`);
} else {
document.write(`invalid gender: ${c}`);
}
}
function enumHasValue(e, v) {
for (var enumMember in e) {
if (enumMember === v) {
return true;
}
}
return false;
}
validGender("Female"); // => "valid gender: Female"
document.write("<br/>");
validGender("Alien"); // => "invalid gender: Alien"
Try this example out in the TypeScript Playground (copy and paste it in and press Run).
e of the function enumHasValue,just like function enumHasValue(e:??,v:string),how to make it?You can create a function to parse the gender parameter, like this:
function parseGender(value : Gender | number | string) {
var gender;
if (value === Number(value)) {
gender = <Gender>value;
}
else if (value === String(value)) {
if (<string>value in Gender) {
gender = Gender[value];
}
}
if (!gender) throw new TypeError("The parameter gender is incorrect");
return gender;
}
And then you can use it inside your function:
function judgeGender(gender : Gender | number | string) {
var g = parseGender(gender);
// do whatever you want with g
}
parseGender(0)=>0;parseGender("male")=>0 ,then I change gender = Gender[value]; to gender = <Type>value;;so parseGender(0)=>0;parseGender("male")=>"male". Did I do something wrong?