Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda