typescript-como-crear-un-proyecto

Cómo crear un proyecto TypeScript

En la entrada anterior creamos nuestra primera aplicación de TypeScript. Simplemente creamos una carpeta vacía y metimos dentro nuestros ficheros.

Pero (ya lo adelantamos) lo normal es inicializar el proyecto de TypeScript. Para ello, usaremos la propia herramienta tsc. Simplemente tenemos que hacer.

tsc --init

Cuando ejecutamos el comando tsc --init en la terminal, en el directorio de tu proyecto, el compilador de TypeScript genera automáticamente un archivo de configuración preconfigurado llamado tsconfig.json.

Y dirás: “pero bueno, ¿seguro que hace muchas más cosas?”. No… sólo crea ese archivo. En eso consiste “inicializar un proyecto” en TypeScript 😅.

En realidad, es un fichero importante y bastante largo. Así que, no está mal que nos lo cree por nosotros

El fichero tsconfig.json

El archivo tsconfig.json es el archivo de configuración principal de un proyecto TypeScript. Es un fichero JSON que contiene opciones y parámetros que controlan el comportamiento de TypeScript en nuestro proyecto.

La pinta que tiene el fichero tsconfig.json es, más o menos, la siguiente:

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "esModuleInterop": true,                               
    "forceConsistentCasingInFileNames": true,          
    "strict": true,                                        
    "skipLibCheck": true     
  },
  "include": [
    "src"
  ]
}

Este archivo le indica al compilador cómo debe manejar los archivos TypeScript. Por ejemplo, qué archivos incluir, cuáles excluir, a qué versión de ECMAScript compilar, entre otras configuraciones importantes.

Parámetros habituales tsconfig-json

Configuración general

ParámetroDescripción
targetEspecifica la versión de ECMAScript a utilizar (ej. "ES6", "ES2020", "ESNext")
moduleDefine el sistema de módulos ("CommonJS", "ES6", "ESNext")
strictActiva todas las verificaciones estrictas (true o false)
libLista de bibliotecas a incluir (ej. "ES6", "DOM")
allowJsPermite compilar archivos .js
jsxEspecifica cómo transformar el código JSX ("preserve", "react")
esModuleInteropHabilita la interoperabilidad con módulos ES

Opciones de salida

ParámetroDescripción
outDirEspecifica el directorio de salida para los archivos compilados
rootDirDefine el directorio raíz de los archivos fuente
declarationGenera archivos de declaración .d.ts
sourceMapCrea archivos .map para facilitar la depuración
incrementalHabilita la compilación incremental para mejorar el rendimiento

Resolución de Módulos

ParámetroDescripción
moduleResolutionConfigura la resolución de módulos ("node", "classic")
baseUrlEstablece la base para rutas relativas de módulos
pathsDefine alias para rutas de módulos específicos
resolveJsonModulePermite importar archivos .json

Tipos y comprobaciones

ParámetroDescripción
skipLibCheckOmite la verificación de tipos en archivos de definición (.d.ts)
typesEspecifica archivos de declaración a incluir en el proyecto
typeRootsDefine directorios para buscar archivos de declaración

Características avanzadas

ParámetroDescripción
emitDecoratorMetadataEmite metadatos para decoradores, útil para bibliotecas como Angular
experimentalDecoratorsHabilita el uso de decoradores, una característica experimental de TypeScript

Estructura de un proyecto

Un proyecto TypeScript no tiene una estructura determinada. Es decir, podemos ser flexibles, y adoptar la organización que nosotros queramos.

Pero, más o menos, todos seguimos unas convenciones parecidas. Puedes hacer tus propias variaciones (según lo que necesite tu proyecto). Pero así es un ejemplo de estructura típica de un proyecto TypeScript:

/mi-proyecto

├── /src
   ├── /services
   ├── ...
   ├── /utils
   ├── /config
   └── app.ts

├── /dist

├── /tests

├── tsconfig.json
├── package.json
├── .gitignore
└── README.md
  • /src: Contiene todo el código fuente del proyecto
  • /dist: Directorio de salida donde se generan los archivos compilados
  • /tests: Contiene los archivos de testing
  • tsconfig.json: Archivo de configuración del compilador de TypeScript
  • package.json: Archivo de configuración de Node.js
  • .gitignore: Archivo de configuración de por Git
  • README.md: Documentación básica del proyecto

Carpeta “src”

La carpeta src es donde guardamos todos nuestros archivos fuente de TypeScript. Aquí es donde escribiremos nuestro código TypeScript y crearemos la lógica de nuestra aplicación.

El archivo principal de nuestra aplicación, se encuentra en esta carpeta. Generalmente llamamos al fichero principal index.ts o app.ts o main.ts. Pero podemos ponerle el nombre que queramos.

Además del archivo principal, también podemos tener carpetas adicionales dentro de “src” para organizar nuestro código en módulos o componentes. En este ejemplo, hemos creado una carpeta llamada services, utils, config… etc.

Carpeta “dist”

La carpeta “dist” es donde se almacenan los archivos generados después de compilar nuestro código TypeScript. Después de ejecutar el compilador de TypeScript, los archivos JavaScript resultantes se colocarán en esta carpeta.

Estos archivos JavaScript son los que se ejecutan en el navegador o en el entorno de Node.js.