У меня есть система, которая берет пары ключ: объект, а затем позволяет получить их позже в приложении.
Проблема в том, что эта подпись индекса прерывает ввод, потому что она позволяет любому ключу вообще существовать, поэтому вы не можете набирать запросы get ().
Ниже приведен краткий фрагмент приложения и проблемы.
Я попытался удалить эту подпись индекса, что является проблемой, потому что тогда setting[key].value
в class Configuration
не существует. Я попытался удалить базовый интерфейс настроек, но это в основном нарушает все ваши изменения в наборе текста. Я пробовал довольно много вспомогательных функций и средств защиты, чтобы заставить приложение понять, что это настройка. Я не нахожусь в той точке, где мне не придется принимать ввод с помощью метода get.
class Setting {
constructor(
public value: number,
private locked: boolean
) { }
}
class Settings {
[key: string]: Setting; // Comment me out: errors (but typing), leave me in: no errors (no typing)
}
interface SettingsCountryRank extends Settings {
taiwan: Setting;
china: Setting;
}
class Configuration<TSettings extends Settings> {
settings: TSettings;
public get<U extends keyof TSettings>(key: U): TSettings[U]['value'] {
return this.settings[key].value;
}
constructor(settings: TSettings) {
this.settings = settings;
}
}
function main(){
const test = new Configuration<SettingsCountryRank>({ taiwan: new Setting(1, true), china: new Setting(2, false) });
test.get('china')
test.get('notathing');
}
Когда вы включаете и выключаете линию в Settings
, вы видите проблему.