--- name: React TypeScript description: TypeScript patterns specific to React components and hooks. metadata: labels: [react, typescript, types] triggers: files: ['**/*.tsx'] keywords: [ReactNode, FC, PropsWithChildren, ComponentProps] --- # React TypeScript ## **Priority: P1 (OPERATIONAL)** Type-safe React patterns. ## Implementation Guidelines - **Components**: Return `JSX.Element`. Props interface over `React.FC`. - **Children**: Use `ReactNode` or `PropsWithChildren`. - **Events**: `React.ChangeEvent`. - **Hooks**: `useRef(null)`. `useState(null)`. - **Props**: Use `ComponentProps<'button'>` to mirror native els. - **Generics**: `(props: ListProps)`. - **Polymorphism**: `as` prop patterns. ## Anti-Patterns - **No `any`**: Use `unknown`. - **No `React.FC`**: Implicit children is deprecated/bad practice. - **No `Function`**: Use `(args: T) => void`. ## Code ```tsx // Modern Props type ButtonProps = ComponentProps<'button'> & { variant?: 'primary' | 'secondary'; }; // Generic Component type ListProps = { items: T[]; render: (item: T) => ReactNode; }; function List({ items, render }: ListProps) { return
    {items.map(render)}
; } // Hook Ref const inputRef = useRef(null); ```