microsoft / microsoft/TypeScript

`Tuple & nominal` not recognised as tuple in spread parameter

Abierto
#45,371 8 comentarios 11 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: Intersection
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

Bug Report

🔎 Search Terms

Nominal, Spread, Tuple,

🕗 Version & Regression Information
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about spread and intersections
⏯ Playground Link

Playground link with relevant code

💻 Code
declare let a: [number, number, number] & { _nominal_a: never }
function b(...params: [number, number, number]) {}
b(...a) // Error: A spread argument must either have a tuple type or be passed to a rest parameter.
🙁 Actual behavior

The error in the code example is thrown, because TypeScript does not detect it as being a tuple.
In roblox-ts, we use a nominal marker type to indicate a special kind of tuple. This bug means that this tuple type can then not be spreaded into a fixed argument function. Our issue: https://github.com/roblox-ts/roblox-ts/issues/1537

🙂 Expected behavior

This is a tuple type, and should therefore be recognised as such.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el ejemplo enlazado de TypeScript Playground y reproduce el error de spread para la intersección de una tupla y un tipo marcador nominal. Sigue el comportamiento de comprobación de tuplas y argumentos spread, y después añade una prueba de regresión que cubra este caso; está terminado cuando la llamada con parámetros fijos se comprueba correctamente sin el error de spread.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.