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

126
Views
Uso de identificadores negativos en la lista

Estoy mostrando una lista que busco desde el backend, que usa ints como ids:

 const events = [ { id: 1, name: "Event 1" }, { id: 2, name: "Event 2" } ];

En la interfaz de usuario, puedo seleccionar un evento o no tengo ningún evento seleccionado. Prefiero mantener el mismo tipo para el evento seleccionado y sé que mi base de datos no generará identificaciones negativas para sus filas. Así que uso una convención común de -1 como evento inicial/no seleccionado:

 const selectedEvent = useState<number>(-1)

Ahora, quiero agregar un evento de Inicio y Fin a la lista de eventos, que son objetos "similares a eventos", que no obtuve de la misma tabla de base de datos. Necesito asignarles una identificación.

Es posible que el DB utilice números positivos. Me mantendré alejado de cero por otras razones**. Así que se me ocurren índices negativos a partir de -2:

 const events = [ { id: -2, name: "Start Event", payload: "ABC" }, ...events, { id: -3, name: "End Event", payload: "XYZ" } ];

Esto funciona bien, solo me pregunto, ¿es esta una convención de uso común? ¿Otros desarrolladores, o yo en el futuro, entenderán este código o se tirarán de los pelos si ven esto? Si no es la mejor manera de avanzar, ¿cuál es? (Como puede ver, estoy trabajando con una base de código javascript / typescript, por lo que si importa, se trata específicamente de este ecosistema)

** No estoy 100% seguro de que todos los DB no comiencen índices numéricos con 0. Solo hay un 0 y necesito dos ID. 0 es falso en javascript, lo que puede causar algunos problemas en el camino. Para resumir, me saltaré cero :)

Editar: para responder a algunos de los comentarios:

  • No trato de mezclar valores de índice con identificadores. Los identificadores pueden estar totalmente fuera de servicio. De hecho, el usuario puede reorganizar eventos arrastrándolos a nuevos lugares. Esa es la razón por la que uso identificadores, en lugar de índices.
  • No son del mismo tipo, pero comparten algunos atributos:
 declare type Event = { id: number; name: string; payload: string; }; declare type StartOrEnd = { id: number; name: string; isStart: boolean; }

Sin embargo , el usuario desea navegar por los eventos, así como por el inicio y el final como un evento. Esto no es ideal desde la perspectiva del tipo, pero aquí es donde tendré que ceder un poco, de una forma u otra. Mi interfaz de usuario simplemente toma un objeto y necesita que tenga una identificación y un nombre:

 interface Props { id: number; name: string; selectEvent: (id: number) => void; } const renderEvent = ({id, name, selectEvent}) => { return ( <div onClick={() => selectEvent(id)}>{name}</div> ) }
about 4 years ago · Santiago Gelvez
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!