Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

229
Visualizações
Texto mecanografiado: convertir de matriz de tipos a objeto de tipos

necesito este tipo

 type Sample = [a: string, b: number]

ser convertido a

 type Sample2 = { a:string, b:number}

Necesito esto para pasar argumentos de una función en un parámetro, en forma de objeto

 function example(otherFunctionParameters: Parameters<typeof otherFunction>){}

No quiero pasar una matriz en el parámetro.

Cómo puedo conseguir esto ?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Debido a que no puede manipular etiquetas de tupla en el sistema de tipos , lo mejor que puede hacer es proporcionar manualmente una tupla de claves de propiedad, una para cada parámetro en la función original.

Al adaptar algunas utilidades de esta respuesta de jcalz, aquí hay una utilidad genérica que le dará un objeto asignado para los parámetros en una función: proporciona el tipo de función y una tupla de etiquetas para cada parámetro:

Parque infantil TS

 type ZipTuples<Keys extends readonly any[], Values extends readonly any[]> = { [K in keyof Keys]: [Keys[K], K extends keyof Values ? Values[K] : never]; }; type ZipTuplesAsObject< Keys extends readonly PropertyKey[], Values extends readonly any[], > = { [T in ZipTuples<Keys, Values>[number] as T[0]]: T[1] }; type ParamsAsObject< Fn extends (...params: readonly any[]) => any, Keys extends readonly PropertyKey[], > = ZipTuplesAsObject<Keys, Parameters<Fn>>; // Use declare function otherFunction ( irrelevantLabel: string, alsoNotUsed: number, onlyTheTypesMatter: boolean, ): void; function example (objectParam: ParamsAsObject<typeof otherFunction, ['a', 'b', 'c']>) { // objectParam; // { a: string; b: number; c: boolean; } const {a, b, c} = objectParam; a; // string b; // number c; // boolean }
about 4 years ago · Juan Pablo Isaza Relatório

0

Desafortunadamente, debe pasarse como una matriz porque un objeto es de un tipo diferente a una matriz.

 type Sample = [a: string, b: number] type Sample2 = { a:string, b:number} function example(otherFunctionParameters: Sample){} function example2(otherFunctionParameters: Sample2){} example(['b', 3]) example2({a: 'b', b: 2})

Recomiendo cambiar el tipo de firma de la función de llamada. Si esto no es posible, una matriz debería funcionar bien.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda