5.0 버전에서는 상수 타입 매개변수가 도입되어 다음과 같이 해도 됩니다.
function values<const T>(initial: T[]) {
return {
hasValue(value: T) { return initial.includes(value) },
};
}
const savedValues = values(["a", "b", "c"]);
savedValues.hasValue("x");
// Argument of type '"x"' is not assignable to parameter of type '"a" | "b" | "c"'.
타입 매개변수 앞에 const 수식어를 추가하면 타입 매개변수 T를 추론할 때 as const를 붙인 값으로 추론됩니다.