// Sample.tsx // A practical TSX + React + TypeScript example 🧩 import React, { useEffect, useState } from "react"; // -------------------- // Types & Interfaces // -------------------- type Role = "USER" | "ADMIN"; interface User { id: number; name: string; role: Role; } // Props for a component interface UserCardProps { user: User; onSelect: (id: number) => void; } // -------------------- // Reusable Component // -------------------- const UserCard: React.FC = ({ user, onSelect }) => { return (

{user.name}

Role: {user.role}

); }; // -------------------- // Main Component // -------------------- const Sample: React.FC = () => { // Typed state const [users, setUsers] = useState([]); const [selectedUserId, setSelectedUserId] = useState(null); const [loading, setLoading] = useState(true); // -------------------- // Side Effects // -------------------- useEffect(() => { // Fake async fetch const loadUsers = async () => { setLoading(true); await new Promise(resolve => setTimeout(resolve, 500)); setUsers([ { id: 1, name: "Alice", role: "USER" }, { id: 2, name: "Bob", role: "ADMIN" }, ]); setLoading(false); }; loadUsers(); }, []); // -------------------- // Event Handlers // -------------------- const handleSelectUser = (id: number) => { setSelectedUserId(id); }; // -------------------- // Derived Values // -------------------- const selectedUser = users.find(u => u.id === selectedUserId); // -------------------- // Conditional Rendering // -------------------- if (loading) { return
Loading users...
; } return (

User List

{users.map(user => ( ))} {selectedUser && (
Selected User:
{selectedUser.name}
)}
); }; export default Sample;