Interfaz de TypeScript con miembros privados
¿Por qué TypeScript no admite miembros privados en las interfaces?
¿Cómo manejar el siguiente escenario?
interface IFoo
{
private member: {};
}
class Foo implements IFoo
{
private member = {};
}
Respuesta #1
Las interfaces definen "contratos públicos", describen el lado público de la clase y, como tal, no tiene sentido tener un modificador de acceso privado.
De la documentación de la interfaz de Typescript:
Esto te prohíbe usarlos para verificar que una clase también tenga tipos particulares para el lado privado de la instancia de la clase.
Pero una interfaz puede extender clases con miembros privados.
De Understanding TypeScript:
En TypeScript, las interfaces también pueden extender clases, pero solo de una manera que implique herencia. Cuando una interfaz extiende una clase, la interfaz incluye todos los miembros de la clase (públicos y privados), pero sin las implementaciones de la clase.
class Customer
{
private id: number;
get Id(): number
{
return this.id
}
set Id( value: number )
{
this.id = value;
}
}
interface ICustomer extends Customer
{
MiddleName: string;
}
