microsoft / microsoft/TypeScript
Suggestion: output fewer errors for incorrectly implemented interface
Open
Nobody has claimed this yet.
Effort: Difficult
Help Wanted
Suggestion
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: nightly
Code
interface A {
f(): void;
}
class B implements A {
eff() {}
}
var b: B;
b.f();
b.f();
b.f();
Expected behavior:
src/a.ts(4,7): error TS2420: Class 'B' incorrectly implements interface 'A'.
Property 'f' is missing in type 'B'.
Actual behavior:
src/a.ts(4,7): error TS2420: Class 'B' incorrectly implements interface 'A'.
Property 'f' is missing in type 'B'.
src/a.ts(9,3): error TS2339: Property 'f' does not exist on type 'B'.
src/a.ts(10,3): error TS2339: Property 'f' does not exist on type 'B'.
src/a.ts(11,3): error TS2339: Property 'f' does not exist on type 'B'.
There can be an overwhelming number of missing-property errors if a commonly-used class mis-implements an interface it declares.
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 reproducing the issue with the src/a.ts example using the TypeScript nightly compiler and compare the TS2420 and repeated TS2339 diagnostics. The change is complete when a class that incorrectly implements an interface does not produce an overwhelming number of redundant missing-property errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100