2017-05-05 1 views
0

이 같은 판별으로 열거와 차별 노동 조합을 사용할 수 있습니다 타이프 2.0로 :관용적 타이프 라이터 열거 차별 연합 (EU)

  • 타이프 2.3로

    export function getInstance(code: Enum.Type1, someParam: OtherType1): MyReturnType1; 
    export function getInstance(code: Enum.Type2, someParam: OtherType2): MyReturnType2; 
    export function getInstance(code: Enum, someParam: UnionOfOtherTypes): UnionOfReturnTypes { 
        switch (code) { 
        case Enum.Type1: 
         return new ReturnType1(someParam as OtherType1); 
        case Enum.Type2: 
         return new ReturnType2(someParam as OtherType2); 
        } 
    } 
    

    이 숙어 방법이 있나요 이것을하기 위해?

  • 캐스팅하지 않고 someParam의 유형을 추론 할 수 있습니까?
  • 제네릭을 사용하거나 함수 매개 변수를 변경하여 형식 정의를 단순화 할 수 있습니까? 그렇다면 최종 함수 만 정의하면됩니까? const getInstance =() => {};

답변

0

당신은 예를 들어, 타입 주장을 사용해야 할 경우이

번호를 수행하는이 숙어 방법이 있나요 :

  • 은 가능한 같은 consts로 함수를 선언인가 someParam as OtherType1 안전하지 않습니다. 타입 선언의
  • +0

    나는 항상 책을 읽었습니다. :) 감사합니다! 차별화 된 노동 조합의 반환 유형을 매개 변수를 기반으로 유추 할 수 있습니까? 즉 코드가 A 유형 인 경우 반환 유형이 B 유형임을 알고 있습니다. – chris

    +0

    예. 반환 유형에 대한 공용체의 모든 명령문을 반환합니다. 예 : 코드의 다른 섹션에서'string'과'number'를 반환하면 리턴 타입은'string | 숫자 ' – basarat