Contenido del curso

Clases en TypeScript con export e import

Resumen

Las clases en TypeScript son la columna vertebral de la programación orientada a objetos y te permiten heredar código de forma estructurada hacia otros archivos de tu proyecto. Aquí aprendes a declarar una clase, crear su constructor, exportarla e implementarla siguiendo el principio de un archivo, una clase.

Qué diferencia hay entre una clase y una interfaz en TypeScript

Visualmente la declaración se parece, pero el comportamiento cambia. Una interfaz describe la forma de un objeto, mientras que una clase te deja definir propiedades, un constructor y métodos que se ejecutan cuando creas instancias.

¿Cuándo uso una clase en lugar de una interfaz? Cuando necesitas crear objetos con lógica propia (métodos), no solo describir su estructura. La clase se instancia con new; la interfaz no.

Dentro de una clase, el método más característico es el constructor, una función especial que se ejecuta al crear el objeto y que asigna los parámetros recibidos a las propiedades internas usando el prefijo this [01:30].

Cómo creo una clase Persona con constructor y método

El primer paso es crear una carpeta llamada Clases y dentro un archivo clase.ts. La clase declara sus propiedades, recibe los parámetros en el constructor y expone un método público que devuelve una cadena.

typescript export class Persona { nombre: string; edad: number; esDesarrollador: boolean;

constructor(nombre: string, edad: number, esDesarrollador: boolean) { this.nombre = nombre; this.edad = edad; this.esDesarrollador = esDesarrollador; }

saludar(): string { return Hola, mi nombre es ${this.nombre} y tengo ${this.edad} años de edad; } }

Por convención, los parámetros del constructor llevan el mismo nombre que las propiedades. Eso facilita identificar a qué te refieres cuando lees el código. El prefijo this deja claro que hablas de la propiedad de la clase y no del parámetro recibido [02:05].

Por qué cada propiedad lleva this dentro del constructor

Dentro del constructor conviven dos cosas con el mismo nombre: el parámetro entrante y la propiedad de la clase. this.nombre = nombre significa guarda el valor del parámetro en la propiedad del objeto. Sin this, estarías reasignando el parámetro a sí mismo y la propiedad quedaría vacía.

El método saludar no necesita parámetros porque toma los valores directamente desde las propiedades del objeto ya construido.

Cómo separo la clase del archivo donde la implemento

Mantener la declaración de la clase y su uso en el mismo archivo funciona, pero rompe una buena práctica clave: una clase debe ser agnóstica al archivo donde se consume. La solución es exportarla y luego importarla donde la necesites [04:10].

Los pasos son tres:

  1. Antepón export a la palabra class en el archivo de la clase.
  2. Crea un archivo nuevo, por ejemplo implementacion.ts.
  3. Importa la clase con import { Persona } from './clase'; y créa el objeto con new.

typescript import { Persona } from './clase';

let persona = new Persona('Juan', 30, true); console.log(persona.saludar());

¿Qué hace la palabra export en una clase? Marca la clase como accesible desde otros archivos. Sin export, TypeScript te dirá que no encuentra el nombre Persona cuando intentes importarla.

Para compilar y ejecutar, navega a la carpeta Clases con cd Clases, corre tsc implementacion.ts y luego node implementacion.js. El resultado en consola es: Hola, mi nombre es Juan y tengo 30 años [05:30].

Qué es el principio de un archivo una clase

Es una convención que mantiene tu proyecto ordenado. Cada clase vive en su propio archivo y se importa donde haga falta. Así puedes instanciarla en cuantos archivos quieras sin duplicar código y sin acoplar la definición a un único caso de uso.

¿Por qué separar la clase del archivo de implementación? Porque la clase debe ser reutilizable. Si la dejas pegada al código que la usa, no puedes consumirla desde otros módulos sin copiarla.

Cuando creas una clase nueva, dale su propio archivo. Cuando necesites usarla, crea otro archivo, importa lo necesario y trabaja con la instancia. Esa disciplina te deja escalar el proyecto sin acumular dependencias raras entre módulos.

¿Qué clase vas a refactorizar primero en tu proyecto para separarla en su propio archivo? Comparte tu caso en los comentarios.