Estoy leyendo la documentación de Nest.js y hay una línea que no entiendo bien.
Personalizamos nuestro CatsController usando su función de constructor, de modo que cuando el contenedor IoC crea la instancia de catsController, se crea con una instancia de catsService como parámetro de construcción. Al menos esta es mi mejor suposición basada en todo el documento. Pero, ¿qué significa exactamente lo siguiente:
Observe el uso de la sintaxis
private. Esta forma abreviada nos permite declarar e inicializar el miembrocatsServiceinmediatamente en la misma ubicación.
¿Por qué la palabra clave privada logra eso? ¿Cómo se vería si no usáramos la sintaxis abreviada?
Nest.js realiza la inicialización de CatsService en ambos casos, esa es una de las premisas clave del IoC en el que se basa. El uso de la palabra clave private en la declaración del constructor es completamente opcional y es útil para convertir el parámetro del constructor en un atributo de CatsController durante su inicialización. Sin él, debe escribir:
@Controller('cats') export class CatsController { private catsService: CatsService; constructor(service: CatsService) { this.catsService = service; } /* TODO */ } Observe cómo aparece la palabra clave private para declarar catsService como un atributo privado de la clase, y si la usáramos dentro de la declaración del parámetro del constructor, tendría el mismo significado, lo que daría como resultado un código más pequeño y simple. Por último, esta es una característica sintáctica de Typescript y no tiene relación con NestJS o DI.