database.getStorage<MatchStorage>(StorageName.Matches);
database.getStorage(StorageName.Matches) as MatchStorage;
, она не должна вводить в заблуждение.В классе MyDatabase я использую синглтон паттерн
Правильно ли я понимаю, что ваше решение базируется на том, что обязательно надо вводить дженерик на классе Database и иначе никак?
В плане того, что any в данном случае это не моветон? Как раз как будто бы логично выглядит, что тип данных и ключ хранилища может быть любой.
export interface IStorage {
save(data: unknown): Promise<DbOperationResult<unknown>[]>;
}
я бы даже сказал, это единственный разумный вариант в данной задаче.
насыпать неизвестно каких ключей прямо в класс, где дополнительно могут быть ещё свои поля и методы - путь к анархии.