Avatar ·

¿Cuál es la diferencia entre require(x) e import x en TypeScript/Node.js?

¡Hola a todos! Empecé a estudiar TypeScript y Node.js, y me confunde la diferencia entre dos formas de importar módulos. En todos los tutoriales antiguos veo este código: ```typescript const express = require('express'); const fs = require('fs'); ``` Pero en proyectos nuevos con TypeScript escriben así: ```typescript import express from 'express'; import * as fs from 'fs'; ``` Intenté entenderlo por mi cuenta, pero me enredé aún más. Por ejemplo, probé hacer esto: ```typescript // Forma antigua const myModule = require('./myModule'); // Forma nueva import myModule from './myModule'; ``` Ambos parecen funcionar, pero a veces require da el error "Cannot find module", mientras que import funciona. O al revés: import da "Module '".../myModule"' has no default export", y require funciona bien. Uso Node.js 18 y TypeScript 5. En mi tsconfig.json tengo "module": "commonjs". ¿Quizás el problema está en eso? Explíquenme, por favor, cuál es la diferencia entre ellos y cuándo usar cada uno. Especialmente importante