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

95
Views
Cómo optimizar comprobaciones de TS duplicadas si el valor puede no estar definido

¿Se puede simplificar el siguiente código para mejorar la legibilidad, la simplicidad o de alguna otra manera? Específicamente, ¿se puede escribir esto sin verificar si no está undefined en cada línea?

Estas declaraciones ok son solo algunos de los muchos filtros que se verifican, por lo que esta lista es grande e ingobernable.

 const aOk = data?.a ? data.a.includes(a) : true const bOk = data?.b ? data.b <= b : true const cOk = data?.c ? data.c >= c : true const dOk = data?.d ? data.d === d : true const eOk = data?.e ? data.e === e.toString() : true if ( aOk && bOk && cOk && dOk && eOk ) { return true } return false
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Podrías crear una función auxiliar como

 const fn = (data) = (key, op, value) => data[key] ? op(data[key], value) : true

Luego puede definir un conjunto de funciones que hacen las comparaciones que necesita. Esto podría eliminar la repetición y mejorar la capacidad de mantenimiento. Es posible que pueda usar algo como operations[key](this[key], data[key]) si sus variables en datos y el alcance coinciden.

 const comp = fn(data) const aOk = comp('a', myIncludes, a)
about 4 years ago · Juan Pablo Isaza Report

0

Si la forma de validación no cambia con frecuencia, no veo ningún problema con su función. Como mencionó otro cartel, en su lugar puede crear una lista de funciones. Algo como esto:

 type TData = { a: number[]; b: number; c: number; d: number; e: string; }; const data = { a: [3], b: 4, c: 4, d: 1, e: "9", }; const validators: (data:TData, v: { [k in keyof TData]: number }) => { [k in keyof TData]: () => boolean; } = (v) => ({ a: () => data.a.includes(va), b: () => data.b <= vb, c: () => data.c >= vc, d: () => data.d === vd, e: () => data.e === vetoString(), }); const all = () => { for (const k of Object.values(validators(data, otherData))) { if (!k()) return false; } return true; };
about 4 years ago · Juan Pablo Isaza Report

0

Esto parece claro y es legible para mí:

Parque infantil TS

 const allOk = Boolean( data?.a ? data.a.includes(a) : true && data?.b ? data.b <= b : true && data?.c ? data.c >= c : true && data?.d ? data.d === d : true && data?.e ? data.e === e.toString() : true );
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!