Mapped type remap

키 이름을 바꿔도 값 타입은 따라옵니다

as 절은 속성 이름을 새로 만들고, T[P]는 원래 필드의 값 타입을 콜백 인자로 이어 줍니다.

OnChangeCallbacks가 만들어지는 레일

source

FormFields

firstName, lastName, email 속성을 가진 입력 타입입니다.

반복

P in keyof T

각 키를 하나씩 꺼내 새 속성 이름의 재료로 사용합니다.

rename

as onChange 매핑

템플릿 리터럴과 Capitalize로 콜백 이름을 만듭니다.

value

value: T[P]

원래 필드가 string이면 콜백 인자도 string으로 유지됩니다.

optional

?: callback

필요한 핸들러만 구현할 수 있도록 선택 속성으로 둡니다.

원래 키 firstName: string
새 키 onChangeFirstName?: (value: string) => void
원래 키 email: string
새 키 onChangeEmail?: (value: string) => void