Domine inglês técnico de programação em 2025, seja qual for seu nível. Inscrição gratuita

Utilizando Path Mapping no TypeScript
Thiago Marinho

Thiago Marinho

2 min de leitura
node

Navegação Rápida:

    Lidar com importação de arquivos em uma aplicação de médio a grande porte com Node.js é trabalhoso. A IDE às vezes não é auto suficiente e começa a bugar nessa hora.
    Temos também o problema do "SlashPathHell": ../../../path/to/file.js, onde colocamos várias "../" para descer ou subir de nível nos diretórios.
    notion image

    Solução: Path Mapping

    Typescript criou a ferramenta path mapping que permite mapear os módulos da aplicação e criar atalhos para essas pastas/arquivos de maneira escalável.

    Configuração

    Dentro do tsconfig.json, você deve declarar o baseUrl e os paths dentro da propriedade compilersOptions. O baseUrl é o ponto de partida, considerando o local do arquivo tsconfig.json dentro do projeto.
    paths é um objeto que contém o nome do módulo como propriedade e um array como valor que aponta o caminho/endereço do arquivo ou pasta.
    { "compilersOptions": { "baseUrl": ".", "paths": { "@controllers/*": ["./src/controllers/*"], "@models/*": ["./src/models/*"], "@config/*": ["./src/config/*"], "@utils/*": ["./src/utils/*"] } } }
    Agora com tudo configurado (veja o tsconfig.json completo), você pode importar um arquivo dessa maneira:
    import { User } from '@models/users/User'
    Show 🚀 Melhora demais a legibilidade do código.
    import { User } from "@models/users/User"; // Nice and easy! // import { User } from "../../../../../models/users/User"; Ughh! const user = new User(); user.init();
    Mas é necessário fazer algumas configurações adicionais para executar o projeto.

    Executando

    Se executarmos do jeito que está, vamos obter um erro, porque o ts-node-dev ou ts-node não consegue resolver os caminhos informados no tsconfig.json.
    Vamos instalar uma biblioteca que resolve isso:
    yarn add tsconfig-paths -D
    E no arquivo package.json configuramos o script: dev.
    { "name": "node-ts-path-mapping", "scripts": { "dev": "ts-node-dev -r tsconfig-paths/register src/server.ts" }, "devDependencies": { "@types/express": "^4.17.6", "ts-node-dev": "^1.0.0-pre.49", "tsconfig-paths": "^3.9.0", "typescript": "^3.9.5" }, "dependencies": { "express": "^4.17.1" } }
    flag -r indica que é para executar o arquivo tsconfig-paths/register que está na node_modules antes de iniciar a aplicação.
    Agora rodamos o projeto com:
    yarn dev
    Pronto!
    Agora está tudo funcionando. 🚀
    Diego Fernandes fez um vídeo sobre Setup de projeto Node.js. Ele mostra como configurar o path mapping e outras ferramentas para melhorar o ambiente de desenvolvimento.
    Video preview
    E ai, como foi sua experiência com path mappings do Typescript? O que achou? Valeu a pena? 👍

    Aprenda programação do zero e DE GRAÇA

    No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

    COMECE A ESTUDAR AGORA