TypeScriptを学習していますが、少し混乱しています。 1ビットは以下のとおりです。
interface Props {
name: string;
}
const PrintName: React.FC<Props> = (props) => {
return (
<div>
<p style={{ fontWeight: props.priority ? "bold" : "normal" }}>{props.name}</p>
</div>
)
}
const PrintName2 = (props:Props) => {
return (
<div>
<p style={{ fontWeight: props.priority ? "bold" : "normal" }}>{props.name}</p>
</div>
)
}
上記の両方の機能コンポーネントについて、TypeScriptが同じJSコードを生成することを確認しました。 PrintName2
コンポーネントは、読みやすさの点では、私にとってより合理的です。 2つの定義の違いは何でしょうか?誰もが2番目のタイプの反応コンポーネントを使用していますか?.
React.FC
は、Reactコンポーネントを入力するための推奨される方法ではありません。 link があります。
私はこのタイプを個人的に使用しています:
const Component1 = ({ prop1, prop2 }): JSX.Element => { /*...*/ }
React.FC
短所の短いリスト:
ReactとTypeScriptを使用しているため、PrintName
がタイプReact機能コンポーネント、およびタイプProps
の小道具を取り込みます。
const PrintName: React.FC<Props>
React TypeScriptの型付け repository で、機能コンポーネントの完全なインターフェース定義を読むことができます。
あなたが提供した2番目の例は、タイプがProps
のパラメータのセットを取る関数であり、一般的に何でも返すことができることを除いて、タイピングの形式を提供していません。
したがって、書き込み
const PrintName2 = (props:Props)
に似ています
const PrintName2: JSX.Element = (props:Props)
typeScriptは、それが機能コンポーネントであることを自動的に推測することはできません。