no-bare-casts
SolidWriting `as` in TypeScript or TSX production code, modifying a file that contains a bare `as` cast, silencing a type error with a cast, encountering `as unknown as`, or reviewing a cast site.
AI & Automation 55 stars
2 forks Updated 5 days ago MIT
Install
Quality Score: 83/100
Stars 20%
Recency 20%
Frontmatter 20%
Documentation 15%
Issue Health 10%
License 10%
Description 5%
Skill Content
# No bare `as` casts
Any bare `as` in production TypeScript is a signal to stop and work through the decision tree below. Test files (`*.test.ts`, `*.test-d.ts`, `test/**/*.ts`) are exempt — tests use `as` for stubbing and type assertions and that's fine.
## Decision tree
Work through these in order before writing or keeping a cast:
1. **Tighten the input type.** Can the parameter, generic bound, or return type at the source be made more specific so the cast is unnecessary?
2. **Add a runtime check.** Can a type predicate (`function isUser(x): x is User`) narrow the type at runtime, eliminating the cast?
3. **Restructure a generic.** Can a bound or constraint carry the needed information, making the cast unnecessary?
4. **Use `satisfies`.** `expr satisfies T` checks the type without coercing it and is unaffected by this rule. Prefer it when you want a type-check, not a coercion.
5. **Use `castAs<T>(value)`.** When the value already satisfies `T` and the assertion is purely declarative, `castAs` is the right form.
6. **Only if none of the above: use `blindCast<T, "Reason">(value)`.** The `Reason` literal must name the specific compromise in language a reviewer can evaluate.
## Import
```typescript
import { blindCast, castAs } from '@internal/utils/casts';
```
## Helper signatures
```typescript
// Escape hatch — the value is genuinely opaque or unrelated to the target type.
// The Reason literal documents the compromise; the reviewer evaluates it.
function blindCast<Tar...
Details
- Author
- modem-dev
- Repository
- modem-dev/ossrules
- Created
- 1 weeks ago
- Last Updated
- 5 days ago
- Language
- Python
- License
- MIT
Integrates with
Similar Skills
Semantically similar based on skill content — not just same category
AI & Automation Listed
typescript-best-practices
TypeScript best practices. Use when reading or editing any .ts or .tsx file.
41 Updated today
amajorai AI & Automation Listed
typescript-best-practices
TypeScript best practices. Use when reading or editing any .ts or .tsx file.
1 Updated 3 days ago
ShiosOS AI & Automation Listed
typescript-best-practices
TypeScript idioms and type-safety patterns: discriminated unions, branded types, narrowing, boundary validation. Use when reading, writing, or reviewing any .ts or .tsx file.
5 Updated 2 weeks ago
itsvedantkumar