التحقق من النوع حسب الواجهة في TypeScript: كيف تحدد ما إذا كان الكائن يطابق الواجهة؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم TypeScript وواجهت مشكلة. لدي واجهة `User` ودالة تستقبل بيانات من API. أحتاج إلى التحقق مما إذا كان الكائن المستلم يطابق هذه الواجهة.
إليك الكود الخاص بي:
```typescript
interface User {
id: number;
name: string;
email: string;
}
function processData(data: unknown) {
// كيف أتحقق من أن data هو User؟
if (data instanceof User) { // خطأ: 'User' يشير فقط إلى نوع، لكنه يُستخدم كقيمة هنا
console.log(data.name);
}
}
```
أفهم أن `instanceof` لا يعمل مع الواجهات لأنها تُمسح أثناء وقت التنفيذ. ولكن كيف يمكنني التحقق من أن الكائن يحتوي على جميع الحقول المطلوبة بالأنواع الصحيحة؟ رأيت أنه يمكن استخدام حراس النوع المخصصين (type guards)، لكنني لا أفهم تمامًا كيفية كتابتها بشكل صحيح للواجهات المعقدة. هل هناك نهج قياسي أو أفضل الممارسات للتحقق من الأنواع أثناء وقت التنفيذ؟
أرجو الإفادة.