Files
bookhoard/web
john-okeefe 90c1e7b56a refactor: Improve type safety by removing 'as any' casts throughout reader code
TYPE SAFETY IMPROVEMENTS:
1. manga/reading-direction.ts
   - Create MangaMetadata interface to replace 'any' type
   - Remove redundant 'as any' casts inside detectFromMetadata()
   - Add proper typing for manga_type and reading_direction fields
   - Function signature now properly typed

2. ui/gestures.ts
   - Remove 'as any' cast for comic/manga reader
   - TypeScript already knows the type after type guard checks
   - Improves type safety and enables better autocomplete

3. ui/keyboard-shortcuts.ts
   - Remove 'as any' cast for comic/manga reader
   - Type guard on lines 22-24 narrows the type correctly
   - No cast needed, TypeScript infers ComicReader | MangaReader

4. reader-shell.ts
   - Remove 'as any' cast for comic/manga images array access
   - Type checking after format checks ensures correct type
   - Change: (state.currentReader as any).images.length
   - To: state.currentReader.images.length

BENEFITS:
 Compiler catches property name mismatches (e.g., pageCalculationResult)
 Better IDE autocomplete and inline documentation
 Prevents runtime type errors that would slip through with 'any'
 Code becomes self-documenting with explicit types
 Easier refactoring with compiler assistance

This change improves overall type safety in the reader codebase by
removing unnecessary type casts that were bypassing TypeScript's
type checking. The 'as any' casts were hiding bugs and preventing
the compiler from catching errors at compile time.

Related to: Type system improvements, bug prevention
2026-04-11 00:52:47 -04:00
..