// 1. Index-Signatur für allgemeine Einstellungen
interface UserSettings {
  [key: string]: string;
}

const settings: UserSettings = {
  theme: 'dark',
  language: 'en',
  fontSize: '14px',
};

// 2. Einschränkung der erlaubten Werte
interface ThemeSettings {
  [key: string]: 'light' | 'dark' | 'auto';
}

const themeConfig: ThemeSettings = {
  theme: 'dark',
  mode: 'auto',
  // color: "blue", // Fehler, nicht erlaubt
};

// 3. Mehrere Typen als Werte
interface UserPreferences {
  [key: string]: string | number | boolean;
}

const preferences: UserPreferences = {
  theme: 'light',
  notifications: true,
  volume: 75,
};

// 4. Kombination mit festen Eigenschaften
interface UserProfile {
  username: string;
  email: string;
  [key: string]: string;
}

const user: UserProfile = {
  username: 'johndoe',
  email: 'johndoe@example.com',
  country: 'Germany', // Erlaubt durch die Index-Signatur
};

// 5. Alternativen zu Index-Signaturen
const themeConfigAlt: Record<string, 'light' | 'dark' | 'auto'> = {
  theme: 'dark',
  mode: 'light',
};
