Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

121
Views
Inicializando objeto cuando se usan estrictos NullChecks en Typescript

Tengo una interfaz llamada IUser y uso strictNullChecks en la configuración de mecanografiado. Quiero usar una variable de IUser en la clase como a continuación:

 class UserAccount { user: IUser; }

El código anterior generará el error:

Property 'user' has no initializer and is not definitely assigned in the constructor.

Puedo arreglar esto con:

 class UserAccount { user: IUser; constructor() { user = new User(); } }

Pero desde una perspectiva de tiempo de ejecución, el user puede configurarse solo después de un tiempo después de que se completa la visualización. Hay una latencia para obtener los datos del user del servidor. La configuración del user se realiza a través de un observable RxJS que funciona solo de forma reactiva.

Qué tipo de inicialización puedo hacer para user para que pueda configurarse solo más tarde. Establecer user en null o undefined puede no ser correcto porque uso strictNullChecks y muestro la intención de que el objeto esté presente desde el principio. Pero un objeto válido para user no puede existir hasta que se complete la llamada al servidor.

*** ACTUALIZAR ****

Este es un ejemplo un poco mejor que el anterior:

 export class AddPersonDialogComponent { selectedPerson1: IPersonForTypeahead; selectedPerson2: IPersonForTypeahead; selectedPerson3: IPersonForTypeahead; ... }

A los 3 objetos de persona selectedPerson se les asignan valores cuando el usuario los selecciona de tres 3 menús desplegables en el cuadro de diálogo. Estas tres propiedades comienzan sin nada, pero si el usuario selecciona personas de un menú desplegable en el cuadro de diálogo, se establecen.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede hacer que su uso de UserAccount sea observable, como este:

 userAccount$: Observable<UserAccount> = this.service.getUser().pipe( map(user => new UserAccount(user)) );

La idea aquí es no construir su cuenta de UserAccount hasta que tenga todos los datos necesarios para hacerlo. Esto va junto con su idea " Pero un objeto válido para el usuario no puede existir hasta que se complete la llamada al servidor ".

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!