تخطَّ إلى المحتوى

الواجهة والنوع

الصياغة الشائعة

في TypeScript، تحدد الواجهات بنية الكائنات، مع تعيين أسماء الخصائص أو الأساليب التي يجب أن يحتوي عليها الكائن وأنواعها. والصياغة الشائعة لتعريف واجهة في TypeScript هي كما يلي:

interface InterfaceName {
property1: Type1;
// ...
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;
// ...
}

وبالمثل لتعريف نوع:

type TypeName = {
property1: Type1;
// ...
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;
// ...
};

interface InterfaceName أو type TypeName: يحدد اسم الواجهة. property1: Type1: يحدد خصائص الواجهة مع الأنواع المقابلة لها. يمكن تعريف خصائص متعددة، تفصل بين كل منها فاصلة منقوطة. method1(arg1: ArgType1, arg2: ArgType2): ReturnType;: يحدد أساليب الواجهة. تُعرّف الأساليب بأسمائها، تليها قائمة معاملات بين قوسين ثم نوع الإرجاع. يمكن تعريف أساليب متعددة، تفصل بين كل منها فاصلة منقوطة.

مثال على واجهة:

interface Person {
name: string;
age: number;
greet(): void;
}

مثال على نوع:

type TypeName = {
property1: string;
method1(arg1: string, arg2: string): string;
};

في TypeScript، تُستخدم الأنواع لتحديد شكل البيانات وفرض التحقق من الأنواع. توجد عدة صيغ شائعة لتعريف الأنواع في TypeScript، تبعًا لحالة الاستخدام المحددة. فيما يلي بعض الأمثلة:

الأنواع الأساسية

let myNumber: number = 123; // النوع number
let myBoolean: boolean = true; // النوع boolean
let myArray: string[] = ['a', 'b']; // مصفوفة سلاسل نصية
let myTuple: [string, number] = ['a', 123]; // صف

الكائنات والواجهات

const x: { name: string; age: number } = { name: 'Simon', age: 7 };

أنواع الاتحاد والتقاطع

type MyType = string | number; // نوع اتحاد
let myUnion: MyType = 'hello'; // يمكن أن يكون سلسلة نصية
myUnion = 123; // أو عددًا
type TypeA = { name: string };
type TypeB = { age: number };
type CombinedType = TypeA & TypeB; // نوع تقاطع
let myCombined: CombinedType = { name: 'John', age: 25 }; // كائن يحتوي على الخاصيتين name و age