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

456
Visualizações
¿Cuál es la diferencia entre estas dos cláusulas de "extensión"?

No puedo entender por qué el tipo de nVal1 se puede inferir en cada posición, mientras que nVal2 no se puede.

ingrese la descripción de la imagen aquí

 function rSelf1<T extends unknown[] | [unknown]>(vs: T): T { return vs; } function rSelf2<T extends unknown[]>(vs: T): T { return vs; } const nVal1 = rSelf1(["a", 1, 2, true]); const nVal2 = rSelf2(["a", 1, 2, true]);

enlace de código: https://codesandbox.io/s/typescript-playground-export-forked-t1d8o?file=/index.ts

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

0

(A whole bunch of idk the answer but here's some digging I did to maybe give you some context and related info)

Esto me desconcierta y me emociona. Esencialmente, me hiciste darme cuenta de que "desconocido[] | [desconocido]" puede usarse para inferir tuplas. Siempre quise hacer esto. Esto parece hacky y no puedo entender cómo funciona. Encontré este tipo ts-essentials para tupla. Luego investigué un poco más y encontré esta respuesta de github que explica cómo funciona . Esto nos ayuda un poco. Ahora sabemos que "desconocido[] | [desconocido]" obliga al compilador a inferir el tipo de tupla. ¿Pero por qué? eso no lo se aun Parece que no puedo encontrar nada que explique este comportamiento.

Mi pensamiento antes de investigar un poco sobre esto. Así que no puedo responder directamente a su pregunta, pero me encontré con esta publicación de stackoverflow relacionada . Puede usar parámetros de descanso para inferir fácilmente tipos de tuplas. Me gusta este método porque parece que es algo que pretendían los creadores del mecanografiado. Pero agrega placa de caldera de tiempo de ejecución y eso no es bueno.

Encontré esta otra forma (solución 2) para hacer esto, pero aún no es una solución completamente adecuada. Con este, requiere que el usuario de la función haga "como const" en la matriz.

 // solution 1 function tuple<T extends unknown[]>(...v: T) { return v; } function rSelf3<T>(vs: T): T { return vs; } const nVal3 = rSelf3(tuple("a", 1, true)); // solution 2 type Writable<T> = { -readonly [P in keyof T]: T[P] }; function rSelf4<T extends readonly unknown[]>(vs: T): Writable<T> { return vs; } const nVal4 = rSelf4(["a", 1, true] as const);
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