【実務・中級編】 React.ComponentPropsユーティリティ型 – React実践ガイド

Reactの型定義で消耗しないために:`ComponentProps`を使いこなすプロの流儀

現場でReactを書いていると、一度はこんな経験をするはずだ。「既存のボタンコンポーネントに機能を追加したいが、Propsの型定義をコピペして管理するのが面倒だ」「親から渡されたコンポーネントのPropsをそのままラップしたいのに、型が微妙に噛み合わない」。

TypeScript×Reactの現場において、「型をDRY(Don’t Repeat Yourself)に保つ」ことは、コードの保守性を左右する生命線だ。今日は、React標準の強力なユーティリティ型である `React.ComponentProps` について、実務レベルの「泥臭い」活用術を伝授しよう。

—

1. なぜ `ComponentProps` なのか?

結論から言うと、手動で型を再定義するのは「負債の種」でしかない。

例えば、`Button`コンポーネントのPropsをいちいちインターフェースで書き出していると、オリジナルのPropsが変更された瞬間に、ラップした側のコンポーネントで型エラーの嵐が吹き荒れることになる。

`React.ComponentProps` を使えば、「そのコンポーネントが何を受け取れるか」をReactのランタイムとTypeScriptの静的解析の合意の上で自動抽出できる。これは単なる型推論ではなく、コンポーネントの「契約内容」を動的に取得する行為に近い。

—

2. 実務で直撃する「コンポーネント・ラッピング」の現場

最もよくあるケースは、既存のUIコンポーネントをラップして、独自のロジックを追加したいときだ。

import React from ‘react’;

// 既存の汎用ボタンコンポーネント(ライブラリなど)
const BaseButton = ({ variant, …props }: { variant: ‘primary’ | ‘secondary’ } & React.ButtonHTMLAttributes) => {
return

コメント

タイトルとURLをコピーしました