No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Integración con TypeScript

14/22
Recursos

¿Cómo integrar TypeScript en un proyecto de React con Webpack?

TypeScript es una herramienta poderosa que permite mejorar la calidad de nuestros proyectos al proporcionar chequeo de tipos en tiempo de desarrollo. Integrar TypeScript en un proyecto de React con Webpack no solo aporta las bondades de ambos mundos, sino que también optimiza el flujo de trabajo al permitir mejor mantenimiento y escalabilidad del código. Aquí te guiamos en los pasos esenciales para configurar esta integración.

¿Qué se necesita instalar para comenzar?

Para comenzar, es esencial instalar ciertos recursos y plugins en nuestra terminal. A continuación, los pasos iniciales:

  1. Instalar TypeScript:

    npm install typescript
    
  2. Añadir el loader de TypeScript para Webpack:

    npm install ts-loader
    
  3. Instalar los types para React, React DOM y Webpack:

    npm install @types/react @types/react-dom @types/webpack
    

Con estos complementos, estaremos listos para configurar nuestro entorno de desarrollo.

¿Cómo configurar el archivo tsconfig.json?

El archivo tsconfig.json es el corazón de cualquier proyecto en TypeScript. Aquí se establecen las configuraciones de compilación. Un ejemplo básico sería:

{
  "compilerOptions": {
    "outDir": "./dist",
    "target": "es5",
    "module": "ES6",
    "jsx": "react",
    "noImplicitAny": true,
    "esModuleInterop": true,
    "moduleResolution": "node",
    "baseUrl": "./",
    "paths": {
      "components/*": ["src/components/*"]
    }
  }
}

¿Cómo agregar el Loader de TypeScript a Webpack?

Después de instalar los recursos necesarios, se debe configurar Webpack para que reconozca archivos TypeScript. Esto se hace editando el archivo de configuración de Webpack:

module.exports = {
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js']
  }
}

Este fragmento establece el uso del ts-loader para archivos .ts y .tsx, las extensiones más comunes para los archivos TypeScript en React.

¿Cómo crear componentes con TypeScript?

En React, un componente es la base de la estructura de la interfaz. Al usar TypeScript, podemos definir tipos específicos para las props, asegurando así un sistema robusto y libre de errores. Por ejemplo, crear un componente Title:

import React from 'react';

type TitleProps = {
  title: string;
};

const Title: React.FC<TitleProps> = ({ title }) => {
  return <span>{title}</span>;
};

export default Title;

Este componente garantiza que la propiedad title sea siempre de tipo string, proporcionando un chequeo temprano de errores.

¿Qué hacer para compilar y ver los cambios?

Para asegurar que todos los cambios y configuraciones se reflejen correctamente, es vital compilar y probar el proyecto. Sigue estos pasos:

  1. Compilar el proyecto en modo producción:

    npm run build
    
  2. Iniciar el servidor de desarrollo:

    npm start
    

Al seguir estos pasos y asegurarse de que las configuraciones se aplican tanto al entorno de desarrollo como de producción, estaremos listos para visualizar el resultado de nuestro trabajo en el navegador.

Recuerda siempre revisar la configuración en ambos entornos para evitar inconsistencias al migrar o iniciar un proyecto. ¡Adelante, continúa explorando TypeScript en tus proyectos para obtener un código más claro y mantenible!

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Integración con TypeScript

Añadimos las dependencias:

npm install typescript ts-loader @types/react @types/react-dom @types/webpack

Cuando estamos trabajando con typescript, tenemos que agregar un archivo de su configuración llamado tsconfig.json:
tsconfig.json.

{
    "compilerOptions": {
        "outDir": "./dist",
        "target": "es5",
        "module": "es6",
        "jsx": "react",
        "noImplicitAny": true,
        "allowSyntheticDefaultImports": true,
	"moduleResolution": "node",
	"baseUrl": "./",
	"paths": {
		"@components": [
			"src/components/*"	
		],
	}
    }
}

y añadimos una nueva regla en webpack.config.dev.js:
Y después en webpack.config.js

{
	test: /\.tsx?$/,
	use: 'ts-loader',
	exclude: '/node_modules/',
},

Creamos en components > el archivo Title.tsx:

import React from 'react';

type TitleProps = {
    title: string,
}

const Title = ({ title }: TitleProps) => <span>{title}</span>;

export default Title;

Lo importamos en components/Header.jsx:

import Title from '@components/Title';

Y en la parte del logo, la agregamos:

      <Link to="/">
        <img src={logo} alt="logo" width="32" />
        <Title title="Platzi Store" />
      </Link>

IMPORTANTE: añadir en webpack.config.js y webpack.config.dev.js > resolve:
La extensión .tsx

    extensions: ['.tsx', '.js', '.jsx'],

y npm run build && npm run start para verificar