Как я могу сделать ES6 с именем экспорта для частей объекта без экспорта всего объекта? - PullRequest
0 голосов
/ 07 декабря 2018

Вот объект JavaScript, с которым я работаю:

const tree = {
  birdhouse: {
    inspectNest: () => 'eggs'
  },
  ...
}

Я хочу, чтобы мир имел доступ к функции inspectNest, спрятанной там посередине, но по причинам, связанным с волнообразным движением, я нехочу дать своим потребителям весь tree объект.Я надеялся, что смогу сделать что-то вроде этого как именованный экспорт:

export { tree.birdhouse.inspectNest as inspectNest };

Однако включение точечной нотации для доступа к этим свойствам кажется неверным синтаксисом.

Я подозреваю, что оператор деструктурированиянапример, const { birdhouse: { inspectNest }} = tree; прямо перед экспортом может работать, но есть еще одна загвоздка - другие части моей программы могут переопределять birdhouse или inspectNest при запуске приложения.Когда это произойдет, я не знаю, будет ли измененный элемент продолжать экспортироваться с новым значением.

Любой совет или деструктуризация - лучший подход?

(PS Я знаю export const inspectNest = tree.birdhouse.inspectNest; справится с задачей, но в моем реальном приложении мне понадобятся многие из этих экспортов назначений. Если это вообще возможно, я хочу использовать именованный объект экспорта для сохранения синтаксической чистоты.)

...