потому что когда делал тип по имени класса, он ругался
все равно надо будет выделить место на новой памяти и перенести все элементы туда.
new MirrorObject(["one", "two", "three"])
function createObj<const A extends string[]>(a: A): {[K in A[number]]: K} {
return Object.fromEntries(a.map((v) => [v, v])) as {[K in A[number]]: K};
}
const obj = createObj(["one", "two", "three"]); // см. по ховеру
можно просто отдельное свойство добавить, в котором и будет объект с нужными свойствами
database.getStorage<MatchStorage>(StorageName.Matches);
database.getStorage(StorageName.Matches) as MatchStorage;
, она не должна вводить в заблуждение.В классе MyDatabase я использую синглтон паттерн
Правильно ли я понимаю, что ваше решение базируется на том, что обязательно надо вводить дженерик на классе Database и иначе никак?
В плане того, что any в данном случае это не моветон? Как раз как будто бы логично выглядит, что тип данных и ключ хранилища может быть любой.
export interface IStorage {
save(data: unknown): Promise<DbOperationResult<unknown>[]>;
}