جاري التحميل...
جاري التحميل...
كتابة مكونات React بـ TypeScript
TypeScript شائع جداً مع React. يساعد في اكتشاف الأخطاء مبكراً وتحسين تجربة المطور بالإكمال التلقائي وجعل إعادة الهيكلة أكثر أماناً.
💡 المعيار الصناعي:
معظم مشاريع React الجديدة تستخدم TypeScript افتراضياً. تعلم TypeScript + React معاً ضروري لتطوير الويب الحديث.
في React مع TypeScript، تُعرّف أنواع الخصائص التي يقبلها مكونك:
interface ButtonProps {
label: string;
onClick: () => void;
variant?: 'primary' | 'secondary';
}
function Button({ label, onClick, variant = 'primary' }: ButtonProps) {
return (
<button onClick={onClick} className={`btn btn-${variant}`}>
{label}
</button>
);
}يمكن كتابة نوع لـ useState hook للتأكد من أن الحالة具有correct نوع:
const [count, setCount] = useState<number>(0);
const [name, setName] = useState<string>('');
const [user, setUser] = useState<User | null>(null);يمكن كتابة أنواع لأحداث React لأمان نوع أفضل:
function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
// منطق النموذج
}
function handleChange(e: React.ChangeEvent<HTMLInputElement>) {
const value = e.target.value;
}كيف تكتب نوعاً للخصائص في مكون React؟
كيف تكتب نوعاً لـ useState hook؟
أي امتداد ملف يُستخدم لمكونات React في TypeScript؟
أنشئ مكون Card بخصائص مكتوبة بنوع ونموذج بأحداث مكتوبة بنوع وعدّاد بحالة مكتوبة بنوع.
الحل:
interface ButtonProps {
text: string;
onClick: () => void;
variant?: "primary" | "secondary";
disabled?: boolean;
}
function Button(props: ButtonProps) {
return (
<button
onClick={props.onClick}
className={
props.variant === "secondary"
? "bg-gray-500 text-white px-4 py-2 rounded"
: "bg-blue-500 text-white px-4 py-2 rounded"
}
disabled={props.disabled}
>
{props.text}
</button>
);
}
// Usage Examples:
<Button text="Click me" onClick={() => console.log("clicked")} />أنماط المكونات:
الخطافات والأحداث: