Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
Texto mecanografiado: una forma más sencilla de escribir un objeto en la transformación de matriz

Estoy convirtiendo ciertas propiedades de un objeto a una matriz.

 const result = ({ a, b }: { a: string, b: number }) => [a, b]; // (string | number)[]

Sin embargo, la forma estándar siempre devuelve un tipo de texto mecanografiado insuficiente (string | number)[]

Siempre tengo que especificar mi tipo de salida para que escriba correctamente el resultado.

 const result = ({ a, b }: { a: string, b: number }): [string, number] => [a, b]; // [string, number]

¿Hay una manera más sencilla?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Simplemente agregue como const después de crear la matriz; esto se denomina aserción const. Indica que la matriz recién creada es en realidad una tupla, lo cual tiene que ser si va a contar con que tenga 2 elementos donde el primero es una cadena y el segundo es un número.

 // readonly [string, number] const result = ({ a, b }: { a: string, b: number }) => [a, b] as const;

La única diferencia entre esto y el ejemplo en su pregunta original es que el tipo resultante será de solo lectura . No habrá forma de alterar el valor del resultado a menos que haga una afirmación específica que lo permita.

about 4 years ago · Juan Pablo Isaza Denunciar

0

No se puede escapar del hecho de que tiene que agregar un poco de verbosidad para recuperar un tipo de tupla. Puede crear una función de ayuda que genere tipos de tupla a partir de literales de matriz; ya sea que sea preferible declarar const o la firma de retorno directamente, depende de usted:

 const asTuple = <T extends [any, ...any]>(array: T) => array; const objectToTuple = ({ a, b }: { a: string, b: number }) => asTuple([a, b]); const result = objectToTuple({a: "a", b: 1}) // [string, number]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Que yo sepa, no lo hay.

Puede hacer [a, b] as [string, number] pero básicamente es la misma verbosidad. Otra alternativa es dar result un tipo de función, pero eso es solo mover el "problema" aquí.

Además, agregar esa pequeña declaración de tipo de retorno no es tan malo. No hay mucho más que TS pueda hacer, ya que no puede asumir que desea una [string, number] de forma predeterminada. Eso estaría lejos de ser compatible con versiones anteriores (o incluso deseado por la mayoría de las personas).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda