microsoft / microsoft/TypeScript

Two consecutive variadic elements in the middle part of tuple type can't be recognized

Ouverte
#62,561 3 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@ahejlsberg y travaille déjà.

Depuis le 8/10/2025.

Needs Investigation
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

🔎 Search Terms

tuple, variadic element

🕗 Version & Regression Information

Since 4.0.5

⏯ Playground Link

https://www.typescriptlang.org/play/?#code/GYVwdgxgLglg9mABMAPAFUQUwB5U2AEwGdFwBrMOAdzAG0BdAGkQDUtd9jSwLq76AfAApsALloAjOHAA2mAIZhmAOlUsVqtE0Srl8gE4BzIqJYBKRAG8AUIjt39mKCH1JsAbmsBfRNesQEIihEeUQAXmQhWih9EExmACZmACIJZOYYuO0ARhT5ZMQzd0QAehKAUX19OH1mHAAHTGhMAkQEkKMQAFt8KCJmCRBgwzhggGYgA

💻 Code
function f<U extends unknown[], V extends unknown[]>(x:[boolean, ...V, ...U], ...args:V) {
     return x;
} 

const a = f([true, 2, "b", true], 1, "a" ); //Error, expected 2 arguments, but got 3
🙁 Actual behavior

Compiler sees error

🙂 Expected behavior

No error, because as https://github.com/microsoft/TypeScript/pull/39094 states

If the middle part of T is exactly two variadic elements ...A and ...B, and an implied arity exists for A, infer from a tuple consisting of the initial middle part of S to A and from a tuple consisting of the remaining middle part of S to B, where the length of the initial middle part corresponds to the implied arity for A.

As I understand the middle part of S is 2, "b", true and in the middle part of T we have ...V, ...U then 2, "b" is ...V and true is ...U.

Additional information about the issue

https://stackoverflow.com/posts/79784883/edit

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.