Avatar ·

TypeScript: كيفية استخدام setTimeout بشكل صحيح (window مقابل Node.js)؟

مرحباً بالجميع! لقد بدأت للتو في تعلم TypeScript وواجهت مشكلة غير مفهومة عند استخدام `setTimeout`. أكتب مؤقتاً بسيطاً لتطبيق ويب، لكن TypeScript يشتكي من الأنواع. إليك الكود الخاص بي: ```typescript const timerId = setTimeout(() => { console.log("لقد مرت 3 ثوانٍ"); }, 3000); clearTimeout(timerId); ``` يُصدر TypeScript خطأ: "Argument of type 'number' is not assignable to parameter of type 'Timeout'". أنا في حيرة. في JavaScript، كان `setTimeout` يعيد دائماً رقمًا (معرف المؤقت الرقمي)، وكنت أمرره بهدوء إلى `clearTimeout`. لماذا لا يعمل هذا في TypeScript؟ لقد بحثت في Google واكتشفت أن هناك `setTimeout` مختلفين: واحد للمتصفح (window.setTimeout) وآخر لـ Node.js (global.setTimeout). يعيدان أنواعًا مختلفة: في المتصفح هو `number`، وفي Node.js هو كائن `NodeJS.Timeout`. الآن لا أفهم كيف أجعل TypeScript يستخدم الإصدار الصحيح. هدفي هو كتابة كود يعمل في كل من المتصفح و Node.