Stylistic choices
No classesโ
- red-javascript-style-guide - Why disallow the class keyword?
- Sheriff tries to promote a lightly functional approach. Classes donโt fit such a design
No reduceโ
info
Sheriff actually allows using reduce
for basic operations like summing up numbers.
Only complex operations are banned.
No enumsโ
- eslint-plugin-typescript-enum
- Enums considered harmful
- How to use TypeScript Enums and why not to, maybe
- Let's Talk About TypeScript's Worst Feature
- Effective TypeScript explicitly warns against them, stating that Enums are a legacy design choice of TypeScript
No overloadsโ
Overloadsโฆ
- are superseded by generics. Overloads are a legacy, C#/Angular leftover that was made available in TypeScript before generics were a thing. There are no problems that overloads solve better than generics
- clutter the code and make it more verbose and harder to read, which increase the cognitive overload
- clutter IDE tooltips
- force you to write non-standard JavaScript syntax
- enable flexibility. In other words, they enable your team to write inconsistent codeโexactly the problem that ESLint is designed to solve
- are explicitly warned against in Effective TypeScript, which (quite correctly) claims that conditional types are preferable in every way