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:
(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:
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”.
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.
No puede acceder a user.username porque es parte de la clase UserAccount y no parte de la interfaz.