代碼中的枚舉接受參數值,參數gender
是enum type
,該值必須是["male","female"]
之一,但我想用它只是這樣judgeGender("male")
,我該怎麼做呢? 打字稿功能從下面
function judgeGender(gender){
//......
}
代碼中的枚舉接受參數值,參數gender
是enum type
,該值必須是["male","female"]
之一,但我想用它只是這樣judgeGender("male")
,我該怎麼做呢? 打字稿功能從下面
function judgeGender(gender){
//......
}
你可以做的是接受一個String和check that it exists in the Enum,像這樣:
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"
試試這個例子列於TypeScript Playground(複製和粘貼,然後按運行)。
你的建議是非常有用的,謝謝你的回答:) – codelegant
如果我想對函數enumHasValue的參數'e'進行類型檢查,就像'function enumHasValue(e:??,v:string) ',如何製作它? – codelegant
[看看這個問題](https://stackoverflow.com/questions/30774874/enum-as-parameter-in-typescript)。 – sdgluck
您可以創建一個函數來解析gender
參數,就像這樣:
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;
}
然後你就可以使用它自己的函數中:
function judgeGender(gender : Gender | number | string) {
var g = parseGender(gender);
// do whatever you want with g
}
哇,這是一個很好的解決方案,但作爲你的函數:'parseGender(0)=> 0; parseGender(「male」)=> 0',然後我改變gender = gender [value];'gender =
您可以指定哪些值你能功能接收。
type Male = "male";
type Female = "female";
enum Gender {
Male = Male,
Female = Female
}
function judgeGender(gender: Gender | Male | Female) {
//......
}
judgeGender(Gender.Male);
judgeGender("male");
你有什麼想法嗎? – lenz