microsoft / microsoft/TypeScript
Error message for invalid string literal type could be improved
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: 2.0 Beta
Code
// A *self-contained* demonstration of the problem follows...
interface Foo {
method(value: 'aa'): void;
method(value: 'bb'): void;
method(value: 'zz'): void;
method(value: 'last'): void;
}
const x: Foo = {} as any;
x.method('bar'); // Error line
Expected behavior:
A more meaningful error message, e.g.
Argument of type "'bar'" is not assignable to parameter of type "'aa' | 'bb'|...|'last'"
Actual behavior:
Argument of type "'bar'" is not assignable to parameter of type "'last'"
I am finding this error message confusing, because the compiler picks the value of the last overload in order to report the error, and there is nothing special about the last value.
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 by compiling the self-contained TypeScript snippet and reproducing the overload error. Trace how the compiler selects the reported parameter type, then make the diagnostic include the relevant literal alternatives and verify that the message matches the expected behavior shown in the issue.
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