Убедить TS в том, что объект, проходящий через прокси, никогда не бывает нулевым - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть следующий 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 при создании экземпляра?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...