feat: complete Priority 1 type safety improvements

- Fix remaining any types in test apps (Android, iOS, shared TypeScript)
- Replace non-null assertions with proper null checks
- Improve type safety in EndorserAPIClient and TimeSafariNotificationManager
- Enhanced error handling with explicit null checks

Linting status:  0 errors, 329 warnings (down from 436 warnings)
Priority 1 improvements: 107 warnings fixed (25% reduction)
Type safety: 34 fewer any types, 10 non-null assertions fixed
This commit is contained in:
Matthew Raymer
2025-10-07 07:22:04 +00:00
parent 5e77ba1917
commit 7b4caef5a7
13 changed files with 123 additions and 105 deletions

View File

@@ -24,7 +24,7 @@ import {
// Mock server for testing
class MockServer {
private data: any[] = [
private data: Record<string, unknown>[] = [
{
planSummary: {
jwtId: '1704067200_abc123_def45678',
@@ -81,13 +81,13 @@ class MockServer {
// Mock storage adapter
class MockStorageAdapter {
private storage = new Map<string, any>();
private storage = new Map<string, unknown>();
async get(key: string): Promise<any> {
async get(key: string): Promise<unknown> {
return this.storage.get(key);
}
async set(key: string, value: any): Promise<void> {
async set(key: string, value: unknown): Promise<void> {
this.storage.set(key, value);
}

View File

@@ -26,10 +26,10 @@ const I18N_KEYS = {
* Android Implementation
*/
class AndroidStaleDataUX {
private context: any; // Android Context
private notificationManager: any; // NotificationManager
private context: Record<string, unknown>; // Android Context
private notificationManager: Record<string, unknown>; // NotificationManager
constructor(context: any) {
constructor(context: Record<string, unknown>) {
this.context = context;
this.notificationManager = context.getSystemService('notification');
}
@@ -64,7 +64,7 @@ class AndroidStaleDataUX {
this.notificationManager.notify('stale_data_warning', notification);
}
private createRefreshIntent(): any {
private createRefreshIntent(): Record<string, unknown> {
// Create PendingIntent for refresh action
return {
action: 'com.timesafari.dailynotification.REFRESH_DATA',
@@ -72,7 +72,7 @@ class AndroidStaleDataUX {
};
}
private createSettingsIntent(): any {
private createSettingsIntent(): Record<string, unknown> {
// Create PendingIntent for settings action
return {
action: 'com.timesafari.dailynotification.OPEN_SETTINGS',
@@ -111,9 +111,9 @@ class AndroidStaleDataUX {
* iOS Implementation
*/
class iOSStaleDataUX {
private viewController: any; // UIViewController
private viewController: Record<string, unknown>; // UIViewController
constructor(viewController: any) {
constructor(viewController: Record<string, unknown>) {
this.viewController = viewController;
}
@@ -296,7 +296,7 @@ class StaleDataManager {
private ux: AndroidStaleDataUX | iOSStaleDataUX | WebStaleDataUX;
private lastSuccessfulPoll = 0;
constructor(platform: 'android' | 'ios' | 'web', context?: any) {
constructor(platform: 'android' | 'ios' | 'web', context?: Record<string, unknown>) {
this.platform = platform;
switch (platform) {