useState: useState<Type>(init) khi init không đủ thông tin. useRef: useRef<HTMLInputElement>(null) cho DOM refs, useRef<number>(0) cho mutable values (không trigger re-render). useReducer: type actions với discriminated unions.
typescript
const [user, setUser] = useState<User | null>(null);
const inputRef = useRef<HTMLInputElement>(null); // DOM ref
const timerRef = useRef<number>(0); // mutable value
// Custom hook với explicit return type:
function useCounter(init = 0): [number, () => void] {
const [count, setCount] = useState(init);
return [count, () => setCount(c => c + 1)];
}