Rules Hub
Code Ruleset
← Back to all rules
Rule priority, scope & exceptions
Use this to align rules with the senior-level structure (P0/P1/P2, scope, exceptions/tradeoffs).
fullstack ruleP2stack specificStack: TypeScript
typesclean-codeinference
Omit redundant explicit types where inference is clear
Don't annotate a type that the initializer already makes obvious (e.g. a number initialized to 0); let inference handle it.
PR: vinify-backend · org-mining-hist-2026-06Created: Jun 19, 2026
Bad example
Old codetypescript
| 1 | let total: number = 0; |
Explanation (EN)
An annotation adds noise when it is exactly the local type already inferred.
Objašnjenje (HR)
Good example
New codetypescript
| 1 | let total = 0; |
Explanation (EN)
Objašnjenje (HR)
Notes (EN)
For a local primitive binding, compare the initializer inference with the intended domain and all later assignments before removing an annotation.
Exceptions / Tradeoffs (EN)
Keep wider unions, branded types, empty-collection element types and public-contract annotations that constrain or document the API.