ما الفرق بين require(x) و import x في TypeScript/Node.js؟
مرحبًا بالجميع! بدأت في تعلم TypeScript و Node.js، وأنا مرتبك بشأن الفرق بين طريقتين لاستيراد الوحدات.
في كل مكان في الدروس القديمة أرى هذا الكود:
```typescript
const express = require('express');
const fs = require('fs');
```
لكن في المشاريع الجديدة على TypeScript يكتبون هكذا:
```typescript
import express from 'express';
import * as fs from 'fs';
```
حاولت أن أفهم بنفسي، لكني ازددت ارتباكًا. على سبيل المثال، جربت أن أفعل هذا:
```typescript
// الطريقة القديمة
const myModule = require('./myModule');
// الطريقة الجديدة
import myModule from './myModule';
```
كلاهما يبدو أنه يعمل، لكن أحيانًا يعطي require خطأ "Cannot find module" بينما يعمل import. أو العكس — يعطي import خطأ "Module '".../myModule"' has no default export" بينما يعمل require بشكل طبيعي.
أنا أستخدم Node.js 18 و TypeScript 5. في ملف tsconfig.json لدي "module": "commonjs". ربما المشكلة في هذا؟ اشرح لي، من فضلك، ما الفرق بينهما ومتى يجب استخدام كل منهما. هذا مهم بشكل خاص