microsoft / microsoft/TypeScript
Wrong elementwise error location on optional object property that allows arrays too
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
🔎 Search Terms
error location elementwise elaboration array optional object
🕗 Version & Regression Information
- This is a crash
- This changed between versions ______ and _______
- This changed in commit or PR _______
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
- I was unable to test this on prior versions because _______
⏯ Playground Link
💻 Code
type SingleOrArray<T> = T | readonly T[];
type ProvidedActor = {
src: string;
input?: unknown;
};
type MachineConfig<TActors extends ProvidedActor> = {
invoke?: SingleOrArray<TActors>;
};
declare function setup<TActors extends ProvidedActor>(): {
createMachine: (config: MachineConfig<TActors>) => void;
};
setup<{ src: "fetchUser"; input: string }>().createMachine({
invoke: {
src: "fetchUser",
input: 10,
},
});
🙁 Actual behavior
invoke property gets highlighted
🙂 Expected behavior
input property should get highlighted as it's the one that it's not correct and it's more specific than invoke
Additional information about the issue
we can observe the error location to change when:
- we remove optionality from
invoke - we make the provided type argument a union
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 and the provided generic setup/createMachine reproduction, then inspect how the checker chooses an error location for the optional invoke property and its input property. Done means the diagnostic highlights input rather than invoke, while preserving the expected behavior for the optional and union variations mentioned.
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
- Mostly clear
- Newbie friendliness
- 45/100