Так как ваш геттер содержит асинхронную операцию, нет способа сделать это напрямую string
.Не имеет значения, если вы поместите асинхронную операцию в анонимную функцию, вызов этой функции вернет Promise<string>
.Это означает, что тип свойства будет Promise<string>
Один метод получения работает, потому что тип свойства будет Promise<string>
, что не является проблемой.Он перестает работать, если у вас также есть установщик, и параметр установщика не имеет тот же тип, что и возвращаемый результат get
.
. Вместо этого вы можете создать свойство, равное Promise<string>
.
class ConfigStoreController {
GetConfigParameter(p: string): Promise<string> {
return Promise.resolve(p)
}
SetConfigParameter(p: string, value: string): Promise<void> {
return Promise.resolve(void 0)
}
get debugMode() {
return this.GetConfigParameter("debugMode");
}
set debugMode(value: Promise<string>) {
// There is no way to wait for this operation to finish from the outside, this might be an issue
// Also unhandled errors from the anonymous method are not handled and are not propagated to the caller, since the set is async
(async () => this.SetConfigParameter("debugMode", await value))();
}
}
Лучшее решение, вероятно, состоит в том, чтобы оставить метод получения и использовать вместо него метод set
:
class ConfigStoreController {
GetConfigParameter(p: string): Promise<string> {
return Promise.resolve(p)
}
SetConfigParameter(p: string, value: string): Promise<void> {
return Promise.resolve(void 0)
}
get debugMode() {
return this.GetConfigParameter("debugMode");
}
async setDebugMode(value: string) {
this.SetConfigParameter("debugMode", await value)
}
}