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

327
Views
Tipos de devolución condicional en mecanografiado

Estoy tratando de recorrer una serie de funciones (haciendo llamadas de red) que devuelven diferentes tipos de objetos de configuración. Basado en esta configuración, estoy renderizando componentes de reacción con diferentes accesorios. Pero estoy luchando para que el texto mecanografiado coopere en esto.

Aquí hay un ejemplo simplificado de lo que tenía hasta ahora;

 type FirstConfig = { a: 'a'; }; type SecondConfig = { b: 'b'; }; type ConfigObject = FirstConfig | SecondConfig; type ConfigFunction = () => ConfigObject; const configArray: ConfigFunction[] = [() => ({ a: 'a' }), () => ({ b: 'b' })]; configArray.map(getConfig => { const { a, b } = getConfig(); console.log(a, b); });

Cada vez que recorro la matriz de funciones de configuración y la llamo, parece quejarse de que ninguna de las propiedades definidas en ConfigObject está presente. ¿Algún consejo/guía aquí?

ingrese la descripción de la imagen aquí

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

0

Este es el comportamiento esperado. Su ConfigObject es FirstConfig o SecondConfig . Antes de acceder a sus distintas propiedades, debe resolver su tipo o si la propiedad existe en ese tipo.

Hay diferentes maneras de lograr esto.

  1. Defina un protector de tipo personalizado para verificar un tipo.

const isFirstConfig = (config: ConfigObject): config is FirstConfig => !!(config as any).a;

enlace de caja de arena

  1. Comprobar si la propiedad existe en el objeto
 const config = getConfig(); if ("a" in config) { // the config is of FirstConfig type here }
  1. Agregue una propiedad común para todos los tipos de configuración mediante la cual puede verificar su tipo
 type FirstConfig = { type: "first"; a: "a"; }; type SecondConfig = { type: "second"; b: "b"; };

entonces puedes verificar tipos como este

 const config = getConfig(); if (config.type === "first") { console.log("first type"); // config is FirstConfig type in this 'if' block }

salvadera

  1. Tener un tipo para todas las configuraciones con propiedades establecidas como opcionales
 type ConfigObject = { a?: "a"; b?: "b"; };

En este caso puedes escribir tu código inicial:

 const { a, b } = getConfig(); console.log({ a, b });

salvadera

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!