أنواع الأدوات هي أنواع عام مدمجة تحول الأنواع الموجودة، بحيث تشتق أنواعًا جديدة بدلاً من إعادة تعريفها. فهي تحافظ على الأنواع DRY وتبقيها متزامنة مع مصدرها.
ts
{ : ; : ; : ; : ; }
<>;
<>;
<>;
<, | >;
<, >;
// Update endpoint: accept any subset of fields
function update(id: number, changes: Partial<User>) { ... }
update(1, { name: "New" }); // ✅ only the fields you change
// Create endpoint: everything except the server-generated id
type CreateUser = Omit<User, "id">;
إذا أضفت حقلاً إلى User، فإن كل هذه تُحدَّث تلقائيًا — لا توجد تعريف ثانٍ تنساه.
Record<string, number>; // { [key: string]: number } — dictionaries
ReturnType<typeof fn>; // the return type of a function
Parameters<typeof fn>; // tuple of a function's parameter types
NonNullable<string | null>; // string (strips null/undefined)
Extract<T, U>; Exclude<T, U>; // filter members of a union
أنواع الأدوات تسمح لك بالتعبير عن العلاقات بين الأنواع ("نموذج الإنشاء هو المستخدم ناقص المعرف") بشكل صريح.
فهي تقلل التكرار، وتحافظ على تناسق الأنواع المشتقة تلقائيًا مع مصدرها، وتوجد في كل مكان في قواعد الأكواد الحقيقية — خاصة Partial للتحديثات، و Omit/Pick لـ DTOs، و Record للخرائط.