0Pricing
TypeScript Academy · درس

تحديد أنواع خصائص مكوّنات React

عرّفوا واجهات الخصائص واستخدموا FC أو أنواع القيم المُعادة الصريحة

تحديد أنواع خصائص مكوّنات React درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ترحيب

يتناول هذا الدرس كتابة أنواع Props لمكوّنات React باستخدام TypeScript وReact.

واجهة Props للمكوّن

حدّد واجهة لـ Props الخاصة بمكوّنات React لتوثيق واجهة برمجة المكوّن وفرضها.
interface ButtonProps {
  label: string;
  onClick: () => void;
  disabled?: boolean;
}

function Button({ label, onClick, disabled }: ButtonProps) {
  return <button onClick={onClick} disabled={disabled}>{label}</button>;
}

FC أم نوع الإرجاع الصريح

يضيف React.FC خاصية children وأنواعًا أخرى تلقائيًا. وغالبًا ما يكون تحديد نوع الإرجاع صراحةً (JSX.Element | null) أوضح.
const Card: React.FC<{title: string}> = ({ title }) => <div>{title}</div>;

// Or explicit:
function Card2({ title }: { title: string }): JSX.Element {
  return <div>{title}</div>;
}

كتابة نوع useState

يستنتج useState النوع من القيمة الابتدائية. حدّد معامل نوع عندما تكون القيمة الابتدائية null أو غير واضحة.
const [count, setCount] = useState(0);           // number
const [name, setName] = useState('');            // string
const [user, setUser] = useState<User | null>(null); // explicit

كتابة نوع useReducer

يعمل useReducer بأفضل صورة مع نوع إجراء على شكل اتحاد مميّز.
type Action = { type: 'increment' } | { type: 'decrement' } | { type: 'reset'; value: number };
function reducer(state: number, action: Action): number {
  switch (action.type) {
    case 'increment': return state + 1;
    case 'decrement': return state - 1;
    case 'reset': return action.value;
  }
}

كتابة نوع useRef لعناصر DOM

يتطلب useRef لعناصر DOM تحديد معامل نوع. ابدأ بالقيمة null لأن العنصر غير موجود بعد.
const inputRef = useRef<HTMLInputElement>(null);

// Use:
if (inputRef.current) {
  inputRef.current.focus();
}

كتابة أنواع معالجات الأحداث

تشمل أنواع أحداث React كلًا من React.ChangeEvent وReact.MouseEvent وReact.FormEvent.
function handleChange(e: React.ChangeEvent<HTMLInputElement>) {
  console.log(e.target.value);
}
function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
  e.preventDefault();
}

المكوّنات العامة

تقبل المكوّنات العامة معامل نوع لإنشاء قوائم وقوائم اختيار مرنة وآمنة من ناحية الأنواع.
function List<T extends { id: number }>({ items }: { items: T[] }) {
  return <ul>{items.map(i => <li key={i.id}>{JSON.stringify(i)}</li>)}</ul>;
}

forwardRef مع TypeScript

يتطلب forwardRef معاملات نوع لكل من نوع عنصر ref وProps.
const Input = React.forwardRef<HTMLInputElement, InputProps>(
  ({ label, ...props }, ref) => (
    <label>{label}<input {...props} ref={ref} /></label>
  )
);

أنواع القيم المعادة من Hooks المخصّصة

حدّد أنواع القيم المعادة من Hook مخصّص صراحةً لتجنب استنتاج any[] عند إرجاع tuple.
function useToggle(init: boolean): [boolean, () => void] {
  const [state, setState] = useState(init);
  return [state, () => setState(s => !s)];
}

Context مع TypeScript

حدّد نوع React context باستخدام اتحاد يتضمن undefined لإجبار المستهلكين على التحقق من وجود context.
const AuthContext = React.createContext<User | undefined>(undefined);
function useAuth(): User {
  const ctx = useContext(AuthContext);
  if (!ctx) throw new Error('useAuth must be used within AuthProvider');
  return ctx;
}

تحقق سريع

ما النوع الصحيح لـ ref يشير إلى عنصر إدخال HTML؟

مراجعة

حدّد أنواع Props في React باستخدام الواجهات، وuseState باستخدام معاملات النوع، والأحداث باستخدام أنواع أحداث React، والمراجع باستخدام الأنواع العامة لعناصر DOM، وforwardRef باستخدام معاملَي نوع. تتيح المكوّنات العامة إنشاء واجهة مستخدم قابلة لإعادة الاستخدام وآمنة من ناحية الأنواع.

الأسئلة الشائعة

هل درس «تحديد أنواع خصائص مكوّنات React» مجاني؟

نعم — نص درس «تحديد أنواع خصائص مكوّنات React» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «تحديد أنواع خصائص مكوّنات React»؟

عرّفوا واجهات الخصائص واستخدموا FC أو أنواع القيم المُعادة الصريحة تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تحديد أنواع خصائص مكوّنات React»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تحديد أنواع خصائص مكوّنات React
  2. تحديد أنواع useState وuseReducer
  3. تحديد أنواع useRef ومعالجات الأحداث
  4. المكوّنات العامة وforwardRef
← العودة إلى TypeScript Academy