Descripción (meta description para Google)
Aprende a crear alias de rutas en TypeScript y Angular usando tsconfig.json para evitar imports largos, mejorar la legibilidad del código y mantener una arquitectura más limpia y escalable.
A medida que un proyecto crece, las rutas relativas empiezan a convertirse en uno de los mayores enemigos de la legibilidad del código. Imports como ../../../../services/user.service no solo son feos, sino que también hacen el mantenimiento mucho más complicado.
Una solución simple y muy efectiva es usar alias de rutas (path aliases). Con ellos podemos definir nombres semánticos para nuestras carpetas y usarlos en cualquier import del proyecto.
Imagina este escenario típico en Angular o TypeScript:
import { UserService } from '../../../../services/user.service';
import { AuthGuard } from '../../../guards/auth.guard';Problemas claros:
La idea es poder escribir algo como:
import { UserService } from '@services/user.service';
import { AuthGuard } from '@guards/auth.guard';tsconfig.jsonTodo empieza en el fichero tsconfig.json (o tsconfig.base.json en algunos proyectos).
{
"compilerOptions": {
"baseUrl": "./", // Punto base desde el que se resolverán los alias
"paths": {
"@components/*": ["src/app/components/*"],
"@services/*": ["src/app/services/*"],
"@types/*": ["src/app/types/*"]
}
}
}baseUrlDefine la raíz desde la que TypeScript resolverá los alias.
baseUrl = "./" // raíz del proyectopathsEs un mapa de alias → rutas reales.
Ejemplo mental tipo debugger:
// Import que escribimos
import { UserService } from '@services/user.service';
// TypeScript lo resuelve internamente como:
import { UserService } from 'src/app/services/user.service';Una vez configurado, puedes usarlos directamente en tus imports:
import { HeaderComponent } from '@components/header/header.component';
import { ApiService } from '@services/api.service';
import { User } from '@types/user';Resultado:
Si estás usando Angular, normalmente no necesitas configuración adicional, ya que el CLI respeta el tsconfig.json.
Eso sí, asegúrate de que:
tsconfig.app.json, tsconfig.base.json, etc.).ng serve) tras cambiar los alias.Algunas herramientas necesitan configuración extra:
moduleNameMapper: {
'^@services/(.*)$': '<rootDir>/src/app/services/$1',
}resolve: {
alias: {
'@services': path.resolve(__dirname, 'src/app/services'),
}
}Esto es importante para evitar errores del tipo module not found en tests o builds.
@services, @components, @shared)@app)Los alias de rutas son una mejora pequeña pero con un impacto enorme en proyectos medianos y grandes. Reducen ruido visual, facilitan refactors y hacen que el código se lea casi como documentación.
Si aún estás peleándote con ../../../../, este es uno de esos cambios que merece la pena hacer cuanto antes.

I am particularly drawn to developing applications that are not only functional but also visually appealing and easy to use. I accomplish this by implementing SOLID principles and clean architecture, and applying testing to ensure quality.