microsoft / microsoft/TypeScript
Parameters and readonly tuples
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.4k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
Bug Report
I've encountered a wrong type inference regarding the Parameters generic when the rest operator and the union of readonly tuples are used together.
🔎 Search Terms
infer, Parameters, readonly.
🕗 Version & Regression Information
I have only tested this on TypeScript 4.3.5.
⏯ Playground Link
Playground link with relevant code
In this example, P1 is correctly inferred, whereas P2 is not.
💻 Code
type F = (...args: readonly [number, string] | readonly [string, number]) => void;
type P = Parameters<F>;
🙁 Actual behavior
The type P is never.
🙂 Expected behavior
One would expect P to be of type readonly [number, string] | readonly [string, number].
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked TypeScript Playground example and reproduce the inference of Parameters for the readonly tuple union. Trace the compiler's handling of rest parameters, union tuples, and Parameters, then verify that P is inferred as readonly [number, string] | readonly [string, number] rather than never.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100