함수 이름 우측에 <T>
를 작성해 시작.
T
는 타입 변수로 사용자가 제공한 타입으로 변환될 식별자.
interface useInputRequest<T> {
initState: T;
validation?: {
[Key in keyof T]?: {
[Key in keyof ValidityState]?: string;
}
}
}
type useInputResponse<T> = [useInputState<T>, () => T];
function useInput<T>({initState, validation}: useInputRequest<T>): useInputResponse<T>{
const inputRef = useRef<HTMLInputElement[]>([]);
...
}
타입 추론을 활용해서 사용 시점에 타입을 제공하지 않을 수 있다.