Avatar ·

كيفية الحصول على أنواع وسائط الدالة في TypeScript (Parameters, infer والأنواع الشرطية)

مرحباً بالجميع! أكتب بلغة TypeScript منذ فترة قصيرة وواجهت مهمة أربكتني. لدي عدة دوال تستقبل معاملات مختلفة. على سبيل المثال: ```typescript function fetchUser(id: number, name: string): void { // ... } function updateSettings(theme: 'light' | 'dark', fontSize: number): void { // ... } function logError(error: Error, source: string, timestamp: number): void { // ... } ``` أريد كتابة wrapper عامة تستقبل أي دالة ووسائطها، وتقوم ببعض المعالجة المسبقة (مثل التسجيل)، ثم تستدعي الدالة الأصلية. المشكلة أنني لا أعرف كيفية الحصول ديناميكياً على أنواع وسائط الدالة المُمرَّرة. إليك ما جربته: ```typescript function wrapFunction any>(fn: T, ...args: any[]) { console.log('Calling function with args:', args); return fn(...args); } ``` هذا يعمل، لكنه يفقد التوصيف (typing) — `args` لها النوع