0Pricing
TypeScript Academy · Lección

Modificadores public, private y protected

Controle el acceso a los miembros de una clase con modificadores.

Modificadores public, private y protected es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.

Bienvenida

Los modificadores de acceso de TypeScript controlan la visibilidad de los miembros de una clase. Ayudan a aplicar la encapsulación y evitan usos no deseados.

public: accesible desde cualquier lugar

public es el valor predeterminado. Los miembros públicos son accesibles desde cualquier lugar: dentro de la clase, desde las subclases y desde código externo.
class Car {
  public brand: string;
  constructor(brand: string) { this.brand = brand; }
}
const c = new Car('Toyota');
console.log(c.brand); // OK

private: acceso exclusivo de la clase

Los miembros privados solo son accesibles dentro de la clase que los declara. Las subclases y el código externo no pueden acceder a ellos.
class BankAccount {
  private balance: number = 0;
  deposit(n: number) { this.balance += n; }
}
const a = new BankAccount();
// a.balance; // Error!

protected: acceso desde la clase y las subclases

Los miembros protegidos son accesibles dentro de la clase que los declara y desde cualquier subclase, pero no desde código externo.
class Animal {
  protected name: string;
  constructor(name: string) { this.name = name; }
}
class Dog extends Animal {
  bark() { console.log(this.name + ' says woof!'); } // OK
}

Aplicación exclusiva en tiempo de compilación

Los modificadores de acceso de TypeScript solo se comprueban en tiempo de compilación. El código JavaScript resultante sigue teniendo propiedades públicas; no existe ninguna aplicación en tiempo de ejecución.

Privacidad nativa de JavaScript con #

JavaScript tiene campos privados nativos con `#`, cuya privacidad se aplica en tiempo de ejecución. TypeScript admite esta sintaxis junto con su propia palabra clave `private`.
class Counter {
  #count = 0; // runtime private (JavaScript)
  increment() { this.#count++; }
  get value() { return this.#count; }
}

Modificador readonly

Las propiedades readonly solo se pueden establecer durante la construcción. No se pueden modificar después de la inicialización.
class User {
  readonly id: number;
  constructor(id: number) { this.id = id; }
}
const u = new User(1);
// u.id = 2; // Error!

Combinar modificadores

Puede combinar modificadores de acceso con readonly en una misma propiedad.
class Config {
  constructor(
    public readonly host: string,
    private readonly port: number
  ) {}
}

private en el constructor

Hacer privado un constructor impide la instanciación externa. En su lugar, use métodos de fábrica estáticos.
class Singleton {
  private static instance: Singleton;
  private constructor() {}
  static getInstance(): Singleton {
    return this.instance ??= new Singleton();
  }
}

Constructor protected

Un constructor protegido impide la instanciación directa, pero permite que las subclases lo llamen mediante super().
class Base {
  protected constructor(public id: number) {}
}
class Derived extends Base {
  constructor(id: number) { super(id); }
}

Los modificadores de acceso no añaden sobrecarga en tiempo de ejecución

Como TypeScript elimina toda la información de tipos, los modificadores de acceso no afectan al tamaño ni al rendimiento del código JavaScript compilado.

Comprobación rápida

¿Qué modificador de acceso hace que un miembro de una clase sea accesible dentro de la clase y sus subclases, pero NO desde código externo?

Resumen

Use public (el valor predeterminado) para los miembros accesibles, private para los elementos internos encapsulados y protected para los miembros destinados a las subclases. Añada readonly para impedir modificaciones después de la construcción.

Preguntas frecuentes

¿La lección «Modificadores public, private y protected» es gratis?

Sí — el texto completo de «Modificadores public, private y protected» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Modificadores public, private y protected»?

Controle el acceso a los miembros de una clase con modificadores. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar TypeScript Academy?

No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Modificadores public, private y protected»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?

Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Clases y constructores de TypeScript
  2. Modificadores public, private y protected
  3. Propiedades readonly y propiedades de parámetros
  4. Implementación de interfaces con clases
← Volver a TypeScript Academy