У меня есть следующий fn, который создает прокси:
const getStorageProxy = (store?: Storage) => {
const proxyObj: { store?: DataStorage } = {};
return new Proxy(proxyObj, {
get(obj, prop) {
if (!obj.store) {
obj.store = new DataStorage(store);
}
return obj.store[prop];
},
});
};
И затем я экспортирую несколько экземпляров этого прокси:
const storageA = getStorageProxy(storeA);
const storageB = getStorageProxy(storeB);
export { storageA, storageB };
Причина в том, что я неЯ не хочу на самом деле создавать экземпляр класса DataStorage
, если он не используется, и для удобства я хочу иметь возможность набрать:
import { storageA } from 'storage';
Это все работает.Проблема в том, что согласно TS оба моих экспортированных экземпляра хранилища имеют тип DataStorage | void
из-за:
const proxyObj: { store?: DataStorage } = {};
Они на самом деле не из-за геттера в прокси, но как мне это сказатьTS без фактического присвоения чего-либо proxyObj.store
при создании экземпляра?