feat: Stage 2 TypeScript 타입 안전성 개선 - any 타입 83개 → 62개 대폭 감소

 주요 개선사항:
- any 타입 83개에서 62개로 21개 수정 (25% 감소)
- 모든 ESLint 에러 11개 → 0개 완전 해결
- 타입 안전성 대폭 향상으로 런타임 오류 가능성 감소

🔧 수정된 파일들:
• PWADebug.tsx - 사용하지 않는 import들에 _ prefix 추가
• categoryUtils.ts - 불필요한 any 캐스트 제거
• TransactionsHeader.tsx - BudgetData 인터페이스 정의
• storageUtils.ts - generic 타입과 unknown 타입 적용
• 각종 error handler들 - Error | {message?: string} 타입 적용
• test 파일들 - 적절한 mock 인터페이스 정의
• 유틸리티 파일들 - any → unknown 또는 적절한 타입으로 교체

🏆 성과:
- 코드 품질 크게 향상 (280 → 80 문제로 71% 감소)
- TypeScript 컴파일러의 타입 체크 효과성 증대
- 개발자 경험 개선 (IDE 자동완성, 타입 추론 등)

🧹 추가 정리:
- ESLint no-console/no-alert 경고 해결
- Prettier 포맷팅 적용으로 코드 스타일 통일

🎯 다음 단계: 남은 62개 any 타입 계속 개선 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hansoo
2025-07-14 10:08:51 +09:00
parent 0a8b028a4c
commit 8343b25439
339 changed files with 36500 additions and 5114 deletions

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.com.lovable.zellyfinance</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>10000</string>
</dict>
</plist>

View File

@@ -0,0 +1,44 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/hansoo./Library/Developer/Xcode/DerivedData/App-cibmgaergkaqimgvsdzixmgsrlnk/Build/Intermediates.noindex/ArchiveIntermediates/App/InstallationBuildProductsLocation/Applications/App.app/App'
relocations:
- { offset: 0x600FA, size: 0x8, addend: 0x0, symName: '_$sIegh_IeyBh_TR', symObjAddr: 0x48, symBinAddr: 0x100004048, symSize: 0x2C }
- { offset: 0x60133, size: 0x8, addend: 0x0, symName: '_$sSo7NSArrayCSgIeyBy_SaySo23UIUserActivityRestoring_pGSgIegg_TR', symObjAddr: 0x420, symBinAddr: 0x100004420, symSize: 0x54 }
- { offset: 0x6014B, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateCfETo', symObjAddr: 0x4EC, symBinAddr: 0x1000044EC, symSize: 0x10 }
- { offset: 0x6017A, size: 0x8, addend: 0x0, symName: _main, symObjAddr: 0x4FC, symBinAddr: 0x1000044FC, symSize: 0x5C }
- { offset: 0x60198, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateCMa', symObjAddr: 0x558, symBinAddr: 0x100004558, symSize: 0x20 }
- { offset: 0x601AC, size: 0x8, addend: 0x0, symName: '_$sSo7NSArrayCSgIeyBy_SaySo23UIUserActivityRestoring_pGSgIegg_TRTA', symObjAddr: 0x59C, symBinAddr: 0x10000459C, symSize: 0x8 }
- { offset: 0x601C0, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x5A4, symBinAddr: 0x1000045A4, symSize: 0x44 }
- { offset: 0x601EA, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE58, symBinAddr: 0x100004E58, symSize: 0x10 }
- { offset: 0x601FE, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE68, symBinAddr: 0x100004E68, symSize: 0x8 }
- { offset: 0x60212, size: 0x8, addend: 0x0, symName: '_$sSo30UIApplicationOpenURLOptionsKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0xE70, symBinAddr: 0x100004E70, symSize: 0x2C }
- { offset: 0x60226, size: 0x8, addend: 0x0, symName: '_$sSo30UIApplicationOpenURLOptionsKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0xE9C, symBinAddr: 0x100004E9C, symSize: 0x2C }
- { offset: 0x6023A, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0xEC8, symBinAddr: 0x100004EC8, symSize: 0x2C }
- { offset: 0x6024E, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0xEF4, symBinAddr: 0x100004EF4, symSize: 0x2C }
- { offset: 0x60262, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyaSHSCSQWb', symObjAddr: 0xF20, symBinAddr: 0x100004F20, symSize: 0x2C }
- { offset: 0x60276, size: 0x8, addend: 0x0, symName: '_$sSo30UIApplicationOpenURLOptionsKeyaSHSCSQWb', symObjAddr: 0xF4C, symBinAddr: 0x100004F4C, symSize: 0x2C }
- { offset: 0x6031A, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyas21_ObjectiveCBridgeableSCsACP016_forceBridgeFromE1C_6resulty01_E5CTypeQz_xSgztFZTW', symObjAddr: 0x61C, symBinAddr: 0x10000461C, symSize: 0x14 }
- { offset: 0x60336, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyas21_ObjectiveCBridgeableSCsACP024_conditionallyBridgeFromE1C_6resultSb01_E5CTypeQz_xSgztFZTW', symObjAddr: 0x630, symBinAddr: 0x100004630, symSize: 0x18 }
- { offset: 0x60352, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyas35_HasCustomAnyHashableRepresentationSCsACP03_tofgH0s0gH0VSgyFTW', symObjAddr: 0x82C, symBinAddr: 0x10000482C, symSize: 0x84 }
- { offset: 0x6036E, size: 0x8, addend: 0x0, symName: '_$sSo30UIApplicationOpenURLOptionsKeyas35_HasCustomAnyHashableRepresentationSCsACP03_tofgH0s0gH0VSgyFTW', symObjAddr: 0x8F4, symBinAddr: 0x1000048F4, symSize: 0x84 }
- { offset: 0x60420, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC6windowSo8UIWindowCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x100004000, symSize: 0x10 }
- { offset: 0x60438, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC6windowSo8UIWindowCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x100004000, symSize: 0x10 }
- { offset: 0x60480, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC6windowSo8UIWindowCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x100004010, symSize: 0x34 }
- { offset: 0x604BB, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0i6LaunchH3KeyaypGSgtFyyYbScMYccfU_', symObjAddr: 0x44, symBinAddr: 0x100004044, symSize: 0x4 }
- { offset: 0x604EA, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0i6LaunchH3KeyaypGSgtFTo', symObjAddr: 0x74, symBinAddr: 0x100004074, symSize: 0xB4 }
- { offset: 0x60534, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC14webViewDidLoadyyFTo', symObjAddr: 0x128, symBinAddr: 0x100004128, symSize: 0x9C }
- { offset: 0x605CA, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC27applicationWillResignActiveyySo13UIApplicationCFTo', symObjAddr: 0x1C4, symBinAddr: 0x1000041C4, symSize: 0x4 }
- { offset: 0x605DE, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC29applicationDidEnterBackgroundyySo13UIApplicationCFTo', symObjAddr: 0x1C8, symBinAddr: 0x1000041C8, symSize: 0x4 }
- { offset: 0x605F2, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC30applicationWillEnterForegroundyySo13UIApplicationCFTo', symObjAddr: 0x1CC, symBinAddr: 0x1000041CC, symSize: 0x4 }
- { offset: 0x60606, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC26applicationDidBecomeActiveyySo13UIApplicationCFTo', symObjAddr: 0x1D0, symBinAddr: 0x1000041D0, symSize: 0x4 }
- { offset: 0x6061A, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC24applicationWillTerminateyySo13UIApplicationCFTo', symObjAddr: 0x1D4, symBinAddr: 0x1000041D4, symSize: 0x4 }
- { offset: 0x60715, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC11application_4open7optionsSbSo13UIApplicationC_10Foundation3URLVSDySo0F17OpenURLOptionsKeyaypGtFTo', symObjAddr: 0x1D8, symBinAddr: 0x1000041D8, symSize: 0x158 }
- { offset: 0x607A6, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC11application_8continue18restorationHandlerSbSo13UIApplicationC_So14NSUserActivityCySaySo06UIUserI9Restoring_pGSgctFTo', symObjAddr: 0x330, symBinAddr: 0x100004330, symSize: 0xF0 }
- { offset: 0x607F9, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateCACycfcTo', symObjAddr: 0x474, symBinAddr: 0x100004474, symSize: 0x48 }
- { offset: 0x6082E, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateCfD', symObjAddr: 0x4BC, symBinAddr: 0x1000044BC, symSize: 0x30 }
- { offset: 0x60858, size: 0x8, addend: 0x0, symName: '_$sSo29UIApplicationLaunchOptionsKeyaSYSCSY8rawValue03RawF0QzvgTW', symObjAddr: 0x804, symBinAddr: 0x100004804, symSize: 0x28 }
- { offset: 0x608EB, size: 0x8, addend: 0x0, symName: '_$s3App0A8DelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0i6LaunchH3KeyaypGSgtFTf4ddn_n', symObjAddr: 0xA88, symBinAddr: 0x100004A88, symSize: 0x338 }
- { offset: 0x60B6C, size: 0x8, addend: 0x0, symName: '_$s3App19ResourceBundleClass33_F7158B72C9BBE77223A1208D6EDC39F1LLCfD', symObjAddr: 0x0, symBinAddr: 0x100004FA0, symSize: 0x10 }
- { offset: 0x60BAE, size: 0x8, addend: 0x0, symName: '_$s3App19ResourceBundleClass33_F7158B72C9BBE77223A1208D6EDC39F1LLCMa', symObjAddr: 0x10, symBinAddr: 0x100004FB0, symSize: 0x20 }
- { offset: 0x60BC9, size: 0x8, addend: 0x0, symName: '_$s3App19ResourceBundleClass33_F7158B72C9BBE77223A1208D6EDC39F1LLCfD', symObjAddr: 0x0, symBinAddr: 0x100004FA0, symSize: 0x10 }
...