Skillshub react-typescript

TypeScript patterns specific to React components and hooks. Use when typing React props, hooks, event handlers, or component generics in TypeScript. (triggers: **/*.tsx, ReactNode, FC, PropsWithChildren, ComponentProps)

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/react-typescript" ~/.claude/skills/comeonoliver-skillshub-react-typescript && rm -rf "$T"
manifest: skills/HoangNguyen0403/agent-skills-standard/react-typescript/SKILL.md
source content

React TypeScript

Priority: P1 (OPERATIONAL)

Type-safe React patterns.

Implementation Guidelines

  • Components: Prefer interface/type (
    Props
    )
    over
    React.FC
    (which has implicit children). Use
    JSX.Element
    or
    ReactNode
    as the return type.
  • Children: For components that accept children, use
    PropsWithChildren<T>
    or explicitly type them as
    React.ReactNode
    .
  • Events: Always type event handlers using specific React events, such as
    React.ChangeEvent<HTMLInputElement>
    or
    React.FormEvent<HTMLFormElement>
    .
  • Hooks: For
    useRef
    , avoid
    any
    ; use
    useRef<HTMLDivElement>(null)
    . For
    useState
    , use generics for complex types:
    useState<User | null>(null)
    .
  • Native Elements: Use
    ComponentPropsWithoutRef<'button'>
    or
    ComponentPropsWithRef
    to extend native attributes safely.
  • Generics: Implement generic components for reusable UI like lists using
    <T,>(props: ListProps<T>)
    .
  • Discriminated Unions: Use Discriminated Unions for mutually exclusive props (e.g.,
    success
    vs
    error
    states).
  • Utility Types: Leverage
    Omit
    ,
    Pick
    , and
    Partial
    to transform prop interfaces and avoid redundancy.

Anti-Patterns

  • No
    any
    : Use
    unknown
    .
  • No
    React.FC
    : Implicit children is deprecated/bad practice.
  • No
    Function
    : Use
    (args: T) => void
    .

References

See references/example.md for typed props, generic components, and hook ref patterns.