2015-01-02 3 views
16

난 다음 열거에게이타이프 라이터 열거 스위치

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

(기본값으로 직진)의 난

var editMode = EditMode.Edit; 

왜 다음과 같은 코드가 작동하지 않는 열거 형의 변수를 가정 해 봅시다 ?

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

이 코드는 TypeScript 놀이터에서 사용할 수 있습니다. 스크립트가 올바른 순서로로드되고 있습니까? –

+0

놀이터에서 작동하는지 확인할 수도 있습니다. –

+2

예, 코드 자체가 문제가 아닌 것으로 보입니다. 어떤 이유로 내 코드는 열거 뒤에 숫자가 아니라 번호와 관련된 문자열을 지정합니다. 예를 들어 istead는 1 (편집) "1"입니다. 왜 내가 이해할 수 없는지. – Mantzas

답변

9

내가 왜 그런지 알게되었습니다. 어딘가에 코드에서이 열거 형을 문자열로 전달하는 활성화 함수 (durandal을 사용하고 있습니다)가 있습니다 (이 함수에는 열거 형으로 표시된 매개 변수가 있지만 여전히 문자열입니다). 이것이 나의 switch 문이 실패하는 이유이다. 나는 단순히 값을 숫자로 변환 했으므로 모든 것이 예상대로 작동합니다. 어쨌든 고마워요

+1

이것은 나에게도 문제가되었습니다. 내 생성자에 Enum 유형의 매개 변수가 있지만 외부 호출자가 문자열을 전달했습니다. 생성자 매개 변수를 string 유형으로 변경하고 EnumType [매개 변수]를 사용하여 열거 형으로 변환했습니다. – mfanto

22

나는 또한이 문제가 발생했습니다. 쉽게 둘러 볼 수있는 방법 : 변수에 스위치 앞에 + 기호를 추가하십시오 (예 :

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

이것은 타이프 스크립트 결함/버그를 수정하는 유일한 방법 인 것 같습니다. – Kokodoko

+1

그래서 +는 그것을 숫자로 바꿀 것이고, 그것은 효과가있는 것처럼 보입니다. 나는 이것이 위대한 해법처럼 보이지 않는다고 생각한다. 또한 열거 형에서 첫 번째 항목을 0으로 지정하려고 시도했지만 도움이되지 않았습니다. 버그 같아. – nycynik