• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

리터럴 타입 질문드립니다.

23.03.28 21:20 작성 23.03.28 22:26 수정 조회수 239

0

질문 1.

enum categoryEnum {
  H = 'H',
  K = 'K',
  S = 'S',
}

const category: categoryEnum = categoryEnum.S;

// 웹 앱
// ---기준선
// 서버

function cate(category: any) {
  console.log(category);
  if (category === 'H') {
    console.log('5% 할인');
  } else if (category === 'K') {
    console.log('10% 할인');
  } else if (category === 'S') {
    console.log('80% 할인');
  } else {
    console.log('서버 멈춤');
  }
}

cate(category);

코드 중간에

// 웹 앱
// ---기준선
// 서버

이렇게 써주신 건 기준선 위로는 프론트엔드 쪽 코드고, 기준선 아래는 서버 쪽 코드라고 예를 들어주신 거라고 이해하면 될까요?

 


질문 2.

그리고 강의 중에는 리터럴 타입을

const sex: 'MALE' | 'FEMALE' | 'ETC' = 'MALE';

이렇게 예를 들어 주셨는데

깃 저장소 보니까

type Hi = 'MALE' | 'FEMALE' | 'ETC';
const sex: Hi = 'MALE';

이렇게 되어있더라고요 두 방법 모두 사용 가능한 건가요?

-> 이 질문은 뒤 부분 강의 보고 이해했습니다.

 


질문 3.

function sendError(): never {
  throw { errorCode: 500, message: 'internal server error' };
}
const result = sendError();
console.log('result :', result);

에러 처리할 때 never를 써주는 거랑 void를 써주는 거랑 결과는 똑같은데 무슨 차이가 있는 건지 이해가 잘 안 갑니다

답변 1

답변을 작성해보세요.

1

질문 1.

넵, 제가 러프하게 가정을 한 것인데요. 제가 말하고자 한 의미는 타입스크립트는 인터프리터 언어이기 때문에 외부에서 요청이 오면 검증을 해줘야 합니다. 특히 Node.js는 에러가 난다면 서버가 멈춥니다. (요새는 컨테이너로 배포하다보니 자동으로 켜주긴 합니다..)

질문 3.

never는 사실 많이 쓰지 않는 타입인데요. '절대 올 수 없는 타입, return이 없는 타입'이라고 생각하시면 쉽습니다. 에러가 나서 모든 실행이 중단될 때 이거나, 무한 loop같은 경우는 return이 없습니다. void는 return을 하긴하는데 아무것도 안 하는것입니다.