Generic components cho phép reuse component với nhiều kiểu data.
- Trong .tsx cần disambiguate
<T,>hoặc<T extends unknown>vì<T>bị hiểu là JSX tag. - TS 5.4+ thêm
NoInfer<T>utility để kiểm soát inference tốt hơn.
typescript
function Select<T>({ options, value, onChange }: {
options: T[];
value: T;
onChange: (v: T) => void;
}) {
return <select>...</select>;
}
// Dùng:
<Select<User> options={users} value={selected} onChange={setSelected} />