Avatar ·

Qual é a diferença entre require(x) e import x em TypeScript/Node.js?

Olá a todos! Comecei a estudar TypeScript e Node.js, e estou confuso com a diferença entre duas formas de importar módulos. Em todos os tutoriais antigos, vejo este código: ```typescript const express = require('express'); const fs = require('fs'); ``` Mas em novos projetos em TypeScript escrevem assim: ```typescript import express from 'express'; import * as fs from 'fs'; ``` Tentei entender por conta própria, mas fiquei ainda mais confuso. Por exemplo, tentei fazer assim: ```typescript // Forma antiga const myModule = require('./myModule'); // Forma nova import myModule from './myModule'; ``` Ambos parecem funcionar, mas às vezes require dá erro "Cannot find module", enquanto import funciona. Ou o contrário — import dá erro "Module '".../myModule"' has no default export", enquanto require funciona normalmente. Estou usando Node.js 18 e TypeScript 5. No meu tsconfig.json, tenho "module": "commonjs". Talvez seja isso? Expliquem, por favor, qual é a diferença entre eles e quando usar cada um. Especialmente importante