Part8_JSX_to_TSX
김명철
이야기해보기

About

DetailedHTMLProps vs ComponentProps

컴포넌트를 생성할 땐 ComponentProps에 태그네임을 넣어 좀 더 편하게 타입을 만들 수 있다. 그렇지 않다면 DetailedHTMLProps의 제네릭에 넣을 HTML 속성을 찾아해매야 한다.

type DetailedHTMLProps<E extends HTMLAttributes<T>, T> = ClassAttributes<T> & E;
 
type ComponentProps<
  T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>
> = T extends JSXElementConstructor<infer P>
  ? P
  : T extends keyof JSX.IntrinsicElements
  ? JSX.IntrinsicElements[T]
  : {};

SyntheticEvent

리액트는 브라우저의 이벤트를 램핑한 브라우저 마다 불일치하는 부분을 조정해둔 SyntheticEvent를 사용한다. 이에 따라 몇몇 이벤트는 브라우저와 직접적인 맵핑을 하지 않는다.