استخدام TypeScript مع React: دليل شامل


يعقوب الحيدري
مطور واجهة أمامية
TypeScript يضيف أنواع ثابتة إلى JavaScript، مما يساعد في اكتشاف الأخطاء أثناء التطوير. في هذا المقال، سنتعلم كيفية استخدام TypeScript مع React لبناء تطبيقات أكثر أمانًا.
مقدمة
TypeScript هو لغة برمجة مفتوحة المصدر طورتها Microsoft، وهي عبارة عن امتداد لـ JavaScript يضيف أنواع ثابتة وميزات أخرى لتحسين تجربة التطوير وجودة الكود. عند استخدام TypeScript مع React، يمكنك الاستفادة من التحقق من الأنواع لتجنب الأخطاء الشائعة وتحسين قابلية الصيانة.
لماذا نستخدم TypeScript مع React؟
- اكتشاف الأخطاء مبكرًا: يساعد TypeScript في اكتشاف الأخطاء أثناء التطوير بدلاً من وقت التشغيل.
- تحسين تجربة التطوير: توفير اقتراحات واكتمال تلقائي أفضل في محررات الكود.
- توثيق أفضل: تعمل الأنواع كشكل من أشكال التوثيق، مما يسهل فهم الكود.
- تحسين قابلية الصيانة: يجعل الكود أكثر قابلية للصيانة، خاصة في المشاريع الكبيرة.
إعداد مشروع React مع TypeScript
لإنشاء مشروع React جديد مع TypeScript، يمكنك استخدام Create React App مع قالب TypeScript:
npx create-react-app my-app --template typescript
cd my-app
npm start
إذا كنت تستخدم Next.js، يمكنك إنشاء مشروع Next.js مع TypeScript كما يلي:
npx create-next-app@latest --ts my-next-app
cd my-next-app
npm run dev
تعريف الأنواع في React
# تعريف أنواع Props
يمكنك تعريف أنواع Props لمكونات React باستخدام واجهات (interfaces) أو أنواع (types):
interface ButtonProps {
text: string;
onClick: () => void;
disabled?: boolean;
variant?: 'primary' | 'secondary' | 'danger';
}
function Button({ text, onClick, disabled = false, variant = 'primary' }: ButtonProps) {
return (
<button
onClick={onClick}
disabled={disabled}
className={`btn btn-${variant}`}
>
{text}
</button>
);
}
# تعريف أنواع State
يمكنك تعريف أنواع State عند استخدام useState:
import { useState } from 'react';
interface User {
id: number;
name: string;
email: string;
}
function UserProfile() {
const [user, setUser] = useState<User | null>(null);
const [loading, setLoading] = useState<boolean>(true);
// ...
return (
<div>
{loading ? (
<p>جاري التحميل...</p>
) : user ? (
<div>
<h2>{user.name}</h2>
<p>{user.email}</p>
</div>
) : (
<p>لم يتم العثور على المستخدم</p>
)}
</div>
);
}
# استخدام أنواع React المدمجة
توفر React العديد من الأنواع المدمجة التي يمكنك استخدامها:
import { ReactNode, ChangeEvent, FormEvent } from 'react';
interface FormProps {
children: ReactNode;
onSubmit: (data: FormData) => void;
}
function Form({ children, onSubmit }: FormProps) {
const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
e.preventDefault();
// ...
};
const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
// ...
};
return (
<form onSubmit={handleSubmit}>
{children}
</form>
);
}
استخدام TypeScript مع Hooks
# useState
const [count, setCount] = useState<number>(0);
const [user, setUser] = useState<User | null>(null);
# useRef
const inputRef = useRef<HTMLInputElement>(null);
# useReducer
type State = {
count: number;
loading: boolean;
error: string | null;
};
type Action =
| { type: 'INCREMENT' }
| { type: 'DECREMENT' }
| { type: 'SET_LOADING'; payload: boolean }
| { type: 'SET_ERROR'; payload: string };
function reducer(state: State, action: Action): State {
switch (action.type) {
case 'INCREMENT':
return { ...state, count: state.count + 1 };
case 'DECREMENT':
return { ...state, count: state.count - 1 };
case 'SET_LOADING':
return { ...state, loading: action.payload };
case 'SET_ERROR':
return { ...state, error: action.payload };
default:
return state;
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, {
count: 0,
loading: false,
error: null,
});
// ...
}
الخلاصة
استخدام TypeScript مع React يوفر العديد من الفوائد، بما في ذلك اكتشاف الأخطاء مبكرًا، وتحسين تجربة التطوير، وتوثيق أفضل، وتحسين قابلية الصيانة. من خلال تعريف أنواع Props و State واستخدام أنواع React المدمجة، يمكنك بناء تطبيقات React أكثر أمانًا وقابلية للصيانة.
مع قليل من الممارسة، ستصبح كتابة TypeScript مع React أمرًا طبيعيًا وستلاحظ تحسنًا كبيرًا في جودة الكود وتجربة التطوير.
مقالات ذات صلة

كيفية بناء واجهة مستخدم جذابة باستخدام React
في هذا المقال، سنتعرف على كيفية بناء واجهة مستخدم جذابة وسهلة الاستخدام باستخدام مكتبة React وبعض المكتبات المساعدة مثل Tailwind CSS.

مقدمة في Next.js: إطار العمل المثالي لتطبيقات React
Next.js هو إطار عمل مبني على React يوفر ميزات مثل توجيه الصفحات والتحميل المسبق والتوليد الثابت. في هذا المقال، سنتعرف على أساسيات Next.js وكيفية البدء في استخدامه.

تحسين أداء تطبيقات React: نصائح وحيل
في هذا المقال، سنتعرف على بعض النصائح والحيل لتحسين أداء تطبيقات React، مثل استخدام React.memo و useMemo و useCallback.
اشترك في النشرة الإخبارية
احصل على أحدث المقالات والتحديثات مباشرة في بريدك الإلكتروني
لن نرسل لك أي رسائل غير مرغوب فيها. يمكنك إلغاء الاشتراك في أي وقت.