Rule proposal: Enforce related types for getter and setter pairs #7236
Labels
accepting prs
Go ahead, send a pull request that resolves this issue
enhancement: new plugin rule
New rule request for eslint-plugin
locked due to age
Please open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.
package: eslint-plugin
Issues related to @typescript-eslint/eslint-plugin
Before You File a Proposal Please Confirm You Have Done The Following...
My proposal is suitable for this project
Description
TypeScript 5.1 allowed
get
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 a getter's type at least be a subtype of its setter's type - as TypeScript used to enforce.Fail Cases
Pass Cases
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 a
number | 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. ❤️
The text was updated successfully, but these errors were encountered: