더북(TheBook)

이처럼 타입 매개변수와 제약의 관계에서는 타입 매개변수와 제약을 동일하게 생각하면 안 됩니다. 타입 매개변수가 제약에 대입할 수 있는 타입인지를 따져보아야 합니다.

그럼 onlyBoolean 함수를 유효하게 만들고 싶다면 어떻게 해야 할까요? 간단합니다. 제네릭을 쓰지 않으면 됩니다.

function onlyBoolean(arg: true | false = true): true | false {
  return arg;
}

강박적으로 제네릭을 쓸 필요는 없습니다. 특히 원시값 타입만 사용한다면 대부분 제약을 걸지 않아도 되는 경우가 많습니다. returnVO 함수도 제네릭을 제거하면 에러가 사라집니다.

interface VO {
  value: any;
}

const f = (): VO => {
  return { value: 'test' };
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.