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).
backend ruleP1stack specificStack: typescript
typescastingtype-safety
Avoid type casts by fixing the source type rather than asserting
Reach for accurate types or generics at the source instead of casting at the use site to silence the compiler.
PR: vinify-backend · org-mining-deep-2026-06Created: Jun 17, 2026
Bad example
Old codetypescript
| 1 | const rows = result as TransactionRow[]; |
Explanation (EN)
A use-site assertion hides a mismatch between the producer and its consumers.
Objašnjenje (HR)
Good example
New codetypescript
| 1 | const rows = await query<TransactionRow>(sql); // typed at source |
Explanation (EN)
Objašnjenje (HR)
Notes (EN)
For compiler-known data transformations, fix the producing API's types so consumers receive the actual contract. For external data, validate the runtime shape before trusting it.
Exceptions / Tradeoffs (EN)
A database query generic or as assertion may only tell the compiler what to assume; neither proves that runtime rows match.