TypeScript

TypeScript

Tutorial TypeScript: Resolución de módulos

TypeScript módulos: organización de código. Aprende a organizar tu código en TypeScript utilizando módulos con ejemplos prácticos.

TypeScript permite trabajar con módulos para organizar el código en unidades lógicas, haciendo el desarrollo de aplicaciones complejas más manejable y escalable. Cuando se trabaja con módulos, TypeScript tiene dos sistemas principales de resolución de módulos: Node y Classic.

Resolución de módulos

Resolución de Módulos Node

Este es el sistema de resolución de módulos que TypeScript utiliza por defecto. En este sistema de resolución, TypeScript trata de imitar el comportamiento del módulo de resolución de Node.js. Cuando se intenta importar un módulo utilizando una ruta relativa, TypeScript buscará ese módulo en el mismo directorio. Si la ruta del módulo es absoluta, TypeScript buscará el módulo en el directorio especificado en la ruta.

Por ejemplo:

// archivo en la ruta 'src/models/user.ts'
export class User {
  constructor(public name: string) {}
}

// archivo en la ruta 'src/controllers/userController.ts'
import { User } from '../models/user';

let user = new User('John Doe');

En este ejemplo, TypeScript buscará el módulo 'User' en el archivo 'user.ts' que se encuentra en el directorio 'models' que está al mismo nivel que el directorio 'controllers'.

Si el módulo que se intenta importar no es relativo ni absoluto, TypeScript buscará el módulo en 'node_modules', que es el comportamiento estándar en Node.js. Por ejemplo:

// en un archivo cualquiera
import * as _ from 'lodash';

_.isEmpty({});  // true

En este ejemplo, TypeScript buscará el módulo 'lodash' en el directorio 'node_modules'.

Resolución de Módulos Classic

Este sistema de resolución es el método original de TypeScript. Cuando se intenta importar un módulo con una ruta relativa, TypeScript buscará ese módulo en el mismo directorio. Si la ruta del módulo es absoluta, TypeScript buscará en la raíz del proyecto y luego en el directorio especificado en la ruta.

// archivo en la ruta 'src/models/user.ts'
export class User {
  constructor(public name: string) {}
}

// archivo en la ruta 'src/controllers/userController.ts'
import { User } from 'models/user';

let user = new User('John Doe');

En este ejemplo, TypeScript buscará el módulo 'User' en el archivo 'user.ts' que se encuentra en el directorio 'models' ubicado en la raíz del proyecto.

Configuración del compilador para módulos

La configuración del compilador para módulos se realiza en el archivo 'tsconfig.json', donde se pueden establecer diferentes opciones.

Para establecer el sistema de resolución de módulos, se utiliza la opción 'moduleResolution':

{
  "compilerOptions": {
    "moduleResolution": "node"
  }
}

En este ejemplo, se está configurando TypeScript para usar el sistema de resolución de módulos de Node.

Para definir el objetivo del módulo de JavaScript al que se debe compilar, se utiliza la opción 'module':

{
  "compilerOptions": {
    "module": "commonjs"
  }
}

En este ejemplo, se está configurando TypeScript para compilar a módulos CommonJS. Otros valores posibles incluyen 'amd', 'umd', 'system', 'es2015', 'es2020', 'esnext', etc.

Para establecer rutas base para la resolución de módulos, se puede usar la opción 'baseUrl':

{
  "compilerOptions": {
    "baseUrl": "./src"
  }
}

En este ejemplo, TypeScript tratará './src' como la raíz del proyecto para la resolución de módulos.

Además, se pueden configurar alias para rutas de módulos usando la opción 'paths':

{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@models/*": ["models/*"]
    }
  }
}

En este ejemplo, '@models' puede usarse como alias para referirse al directorio 'models' en la raíz del proyecto.

Certifícate en TypeScript con CertiDevs PLUS

Ejercicios de esta lección Resolución de módulos

Evalúa tus conocimientos de esta lección Resolución de módulos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Funciones

TypeScript
Test

Funciones de primera clase

TypeScript
Puzzle

Tipos de utilidad

TypeScript
Puzzle

Clases

TypeScript
Test

OOP y CRUD en TypeScript

TypeScript
Proyecto

Tipos literales

TypeScript
Test

Namespaces

TypeScript
Test

Módulos

TypeScript
Test

Funciones TypeScript

TypeScript
Código

Encapsulación

TypeScript
Puzzle

Interfaces

TypeScript
Puzzle

Funciones puras

TypeScript
Puzzle

Variables y constantes

TypeScript
Código

Funciones flecha

TypeScript
Puzzle

Funciones puras

TypeScript
Test

Control de flujo

TypeScript
Código

Resolución de módulos

TypeScript
Test

Control de flujo

TypeScript
Puzzle

Polimorfismo

TypeScript
Test

Operadores

TypeScript
Test

Funciones flecha

TypeScript
Test

Herencia

TypeScript
Puzzle

Clases y objetos

TypeScript
Código

Clases

TypeScript
Puzzle

Operadores

TypeScript
Puzzle

Encapsulación

TypeScript
Test

Herencia

TypeScript
Test

Funciones

TypeScript
Puzzle

Tipos de unión e intersección

TypeScript
Test

Funciones de alto orden

TypeScript
Puzzle

Inmutabilidad

TypeScript
Puzzle

Interfaces

TypeScript
Test

Funciones de alto orden

TypeScript
Test

Tipos de unión e intersección

TypeScript
Puzzle

Tipos genéricos

TypeScript
Test

Control de flujo

TypeScript
Test

Polimorfismo

TypeScript
Puzzle

Interfaces

TypeScript
Código

Tipos literales

TypeScript
Puzzle

Tipos de utilidad

TypeScript
Test

Tipos genéricos

TypeScript
Puzzle

Inmutabilidad

TypeScript
Test

Herencia de clases

TypeScript
Código

Variables y constantes

TypeScript
Test

Variables y constantes

TypeScript
Puzzle

Funciones de primera clase

TypeScript
Test

Introducción a TypeScript

TypeScript
Test

Todas las lecciones de TypeScript

Accede a todas las lecciones de TypeScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de TypeScript

Supera todos los ejercicios de programación del curso de TypeScript y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender los sistemas de resolución de módulos Node y Classic en TypeScript.
  2. Conocer cómo se importan módulos utilizando rutas relativas y absolutas.
  3. Entender cómo TypeScript busca módulos en el directorio actual y en 'node_modules'.
  4. Aprender a configurar el compilador TypeScript para utilizar el sistema de resolución de módulos deseado.
  5. Familiarizarse con la configuración de rutas base y alias para mejorar la resolución de módulos.