Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

113
Vistas
Comportamiento extraño de mecanografiado al declarar variable usando la interfaz

Estoy usando la interfaz para definir un tipo de variable e inicializando esa variable con una clase que tiene algunas propiedades adicionales a la interfaz. por favor refiérase al siguiente código:

 interface User { name: string; id: number; } class UserAccount { name: string; id: number; username: string constructor(name: string, id: number, username: string) { this.name = name; this.id = id; this.username = username; } } const user: User = new UserAccount("Suraj", 1, "srs"); // user.username // I will not be able to access username in above line but when I console it, it will show the value assigned by the class constructor console.log(user) // output will be **UserAccount { name: 'Murphy', id: 1, username: 'srs' }**

Mi pregunta es:

  1. ¿Por qué estamos usando la interfaz cuando estamos inicializando variables con la clase?
  2. Y si estamos usando esto, ¿por qué no es un error en el mecanografiado al compilar?
  3. Y por último, si podemos asignarlo (UserAccount { nombre: 'Murphy', id: 1, nombre de usuario: 'srs' }), ¿por qué no podemos acceder a user.username ?
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

(Escribiendo desde el teléfono, puede agregar detalles más tarde)

Para empezar, no está utilizando la interfaz. Definió una clase y una interfaz que no están relacionadas en absoluto y solo tienen nombres similares.

Para usar realmente la interfaz, tendría que hacer algo como:

clase UserAccount implementa Usuario {...}

Ahora respondiendo a tus preguntas:

  1. Hay muchas razones por las que uno crearía interfaces. Por ejemplo, podría compartir la interfaz con una parte diferente del código para que sepa cómo se ve una cuenta de usuario sin crear una dependencia en la clase misma. Otro usuario puede definir varias interfaces, como "SoundPlayer" y "GraphicsPlayer", y luego hacer que una clase implemente una o ambas. Esas clases podrían representar un reproductor de música implementando "SoundPlayer" o un reproductor multimedia implementando ambos. Esto también asegura que las clases con funciones similares “se vean iguales”.

  2. No estoy seguro de lo que está preguntando, pero siento que esperaba algún tipo de error que no ocurrirá ya que en realidad no está implementando la interfaz.

  3. No puede acceder a user.username porque es parte de la clase UserAccount y no parte de la interfaz.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda