Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I havesearched for related issues and found none that match my proposal.
- I have searched thecurrent rule list and found no rules that match my proposal.
- I haveread the FAQ and my problem is not listed.
My proposal is suitable for this project
- My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
- My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Description
TypeScript 5.1 allowedget
ter andset
ter accessor pairs to specify two different types. While this may be a necessary change to represent JS APIs that use unrelated types (see the release notes), it feels like a confusing thing to do in code. I think it'd make sense to have a lint rule that enforces agetter's type at least be a subtype of itssetter's type - as TypeScript used to enforce.
Fail Cases
interfaceExample{getvalue():string;setvalue(input:string|undefined);}
Pass Cases
interfaceExample{getvalue():string;setvalue(input:string);}
Additional Info
It might be useful to have an option to enforce whether the types must be the exact same. E.g. the super-type being anumber | string
while the sub-type isstring
.
Blocked on my favorite TypeScript issue,microsoft/TypeScript#9879: adding a Type Relationship API. Filing this for tracking and because I enjoy passive-aggressively bugging the TypeScript team for features. ❤️