React polymorphic components with TypeScript
Polymorphic components is a powerful React pattern for controlling how your components render in DOM.
isamatov.com
폴리모픽 컴포넌트 패턴은 매우 유명한 리액트 패턴 중 하나입니다. 컴포넌트를 as를 사용하여 button을 a, div로 사용할 수 있게 해줍니다.
TypeScript와 제네릭을 사용하여 강력한 타입 체킹이 더해진 다형적 컴포넌트를 작성하는 방법을 살펴보겠습니다.
Overview of polymorphic components (폴리모픽 컴포넌트 개요)
API가 어떻게 사용되는지를 확인합니다. 버튼이 a 태그처럼 사용되고 있네요?
즉 버튼은 a와 동일한 props를 허용해야 합니다.
Simple implementation (간단한 구현)
타입체킹 없는 기본 구현 방법입니다.
타입스크립트로 타입 체크하기
const Button = <T extends ElementType = "button">
마지막 한 단계가 남아있습니다.
우리 컴포넌트의 props와 ComponentPropsWithoutRef에서 제공하는 리액트 기본 props 간에 이름 충돌이 없는지 확인하고 싶습니다.
이름 충돌이 있으면 혼란스러운 TypeScript 경고가 발생할 수 있습니다.
오류를 수정하는 것은 간단합니다. Omit을 사용하여 리액트 기본 컴포넌트들의 props에서 우리 컴포넌트의 props 이름을 생략해줍니다.

'FrontEnd' 카테고리의 다른 글
TypeScript의 앰비언트 모듈(Ambient Modules) - js 라이브러리에 타입 적용하기. (0) | 2022.04.28 |
---|---|
리액트 패턴 : Derived State - 파생(계산된) 상태 활용하기 (0) | 2022.04.28 |
리액트로 XState 시작하기 (0) | 2022.04.28 |
타입스크립트의 타입 시스템으로 틱택토(Tic Tac Toe) 구현하기 (0) | 2022.04.27 |
타입스트립트의 타입시스템으로 산수 구현하기 (0) | 2022.04.27 |