더북(TheBook)

만약 Tstring 대신 'a' | 'b' | 'c'와 같은 요소의 유니언으로 추론되게 하고 싶으면 어떻게 해야 할까요? 4.9 버전까지는 다음과 같이 했습니다.

function values<T>(initial: readonly T[]) {
  return {
    hasValue(value: T) { return initial.includes(value) },
  };
}

const savedValues = values(["a", "b", "c"] as const);
savedValues.hasValue("x");
// Argument of type '"x"' is not assignable to parameter of type '"a" | "b" | "c"'.

as const 접미사로 ['a', 'b', 'c']를 튜플로 만들고, 매개변수에도 readonly 수식어를 붙이면 됩니다. T'a' | 'b' | 'c'이므로 'x'에서 에러가 발생합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.