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.