Typescript 조건부 타입

co

cottons_kr
답변 대기중
30 XP
const ContentType: {
  Message: 'Message',
  Alert: 'Alert'
}
type ContentType = (typeof ContentType)[keyof typeof ContentType]

interface Message {
  content: string
}
interface Alert extends Message {}

function getContent(contentType: ContentType, data: any) {
  switch (contentType) {
    case 'Message': {
      data // <-- 이 data의 타입이 Message가 되게 하고싶음
    }; break
    case 'Alert': {
      data // <-- 이 data의 타입이 Alert가 되게 하고싶음
    }; break
  }
}

다음과 같은 코드가 있을때 어떻게 Type을 만들어야 주석에 써져있는대로 할 수 있을까요?
제네릭과 infer 키워드로 추론하고 삼향 연산자써서 해봐도 되지 않습니다.
case문 안에다가 if (data instanceof Message) {} 넣어서 할 수도 있지만 같은 코드가 여러번 나와서 이건 사용하기 싫습니다.


불러오는 중...