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) {}
넣어서 할 수도 있지만 같은 코드가 여러번 나와서 이건 사용하기 싫습니다.
불러오는 중...