2015-01-02 9 views
16

Mam następujący ENUMTypescript przełącznik enum nie działa

enum EditMode { 
    View = 0, 
    Edit = 1, 
    Delete = 2 
} 

Załóżmy, że mam zmiennej typu wyliczeniowego

var editMode = EditMode.Edit; 

Dlaczego nie następujący kod działa (idzie prosto do domyślnych) ?

switch (editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Ten kod działa w maszynopisie zabaw. Czy jesteś pewien, że twoje skrypty ładują się we właściwej kolejności? –

+0

Mogę również potwierdzić, że działa na placu zabaw. –

+2

tak, wygląda na to, że problem nie dotyczy samego kodu. z jakiegoś powodu mój kod nie przypisuje liczby za wyliczeniem, ale ciąg związany z numerem np. istead z 1 (Edytuj) "1". dlaczego nie mogę zrozumieć. – Mantzas

Odpowiedz

9

Znalazłem, dlaczego tak się stało. gdzieś w kodzie znajduje się funkcja aktywacji (używam durandal), która przekazuje to wyrażenie jako ciąg (funkcja ma parametr oznaczony jako wyliczenie, ale wciąż jest ciągiem znaków). dlatego moja instrukcja switcha nie działa. Po prostu przekonwertowałem wartość na liczbę i teraz wszystko działa zgodnie z oczekiwaniami. dzięki anyways

+1

To był również problem dla mnie. Mój konstruktor miał parametr typu Enum, ale zewnętrzny wywołujący przekazywał ciąg znaków. Zmieniłem parametr konstruktora na ciąg tekstowy i użyłem EnumType [parametr], aby przekonwertować go do wyliczenia. – mfanto

22

Też miałem ten problem. Łatwy sposób uzyskać wokół niego: dodać + znak przed zmienną w przełączniku, tj

switch (+editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Wydaje się, że to jedyny sposób, aby naprawić błąd/błąd maszynopisu. – Kokodoko

+1

Więc + zmieni ją na liczbę i to wydaje się działać. Myślę, że to nie wygląda na świetne rozwiązanie. Próbowałem również przypisać pierwszy element do 0 w moim wyliczeniu i to nie pomogło. Wygląda jak błąd. – nycynik