TypeScript - JSX & React Basics

Typing props

type ButtonProps = { onClick?: () => void; children: React.ReactNode };

function Button({ onClick, children }: ButtonProps) {
  return ;
}

State and events

import { useState } from 'react';

function Counter() {
  const [n, setN] = useState(0);
  return ;
}

Generic components

type ListProps = { items: T[]; render: (t: T) => React.ReactNode };

function List({ items, render }: ListProps) {
  return 
    {items.map((i, idx) =>
  • {render(i)}
  • )}
; }

Ensure tsconfig has "jsx": "react-jsx" and React types installed.