-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Open
Labels
enhancement: new plugin ruleNew rule request for eslint-pluginNew rule request for eslint-pluginevaluating community engagementwe're looking for community engagement on this issue to show that this problem is widely importantwe're looking for community engagement on this issue to show that this problem is widely importantpackage: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I have searched for related issues and found none that match my proposal.
- I have searched the current rule list and found no rules that match my proposal.
- I have read 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
Similar to restrict-template-expressions
, the new rule restrict-constructor-expressions
restrict the types of expressions passed to constructors such as Number()
and String()
to a subset which result in non-surprising return values
TypeScript types for constructors have a permissive any
type for the parameters:
Fail Cases
Number({stdout: '123'}) // NaN
Number(['2']) // 2
String({result: 123}) // '[object Object]'
// I'm guessing there are many more...
Pass Cases
Number({stdout: '123'}.stdout) // 123
Number(['2'][0]) // 2
String({result: 123}.result) // '123'
Additional Info
No response
skondrashov
Metadata
Metadata
Assignees
Labels
enhancement: new plugin ruleNew rule request for eslint-pluginNew rule request for eslint-pluginevaluating community engagementwe're looking for community engagement on this issue to show that this problem is widely importantwe're looking for community engagement on this issue to show that this problem is widely importantpackage: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin