Модули ES6 — именованный импорт с общим псевдонимом

#javascript #typescript #module #ecmascript-6

#javascript #typescript #модуль #ecmascript-6

Вопрос:

Если я правильно понимаю, импорт модуля ES6 не допускает следующее:

 import { background, border, foreground } as colors from "./colors";

use(colors.background);
use(colors.border);
use(colors.foreground);
  

Смотрите

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/import

Есть ли какое-либо объяснение, почему?

Мне нравится идея явно перечислить вещи, которые я хочу импортировать. Поэтому мне не нравится import * as colors from "./colors"; , потому что это делает неясным, что именно я использую.

С другой стороны, для меня это слишком многословно: import { background as backgroundColor, border as borderColor, foreground as foregroundColor } from "./colors"; .

Есть идеи, как быть явным и не излишне подробным?

Комментарии:

1. Я предполагаю, что объяснение, почему это невозможно, заключается в том, что люди в tc39 не сочли это случаем, который стоило бы включить в спецификацию. 🙂

2. вы могли бы создать промежуточный модуль, который переименовывает экспорт из вашего цветового модуля. Хотя это привело бы к еще большему количеству подробностей, а не к меньшему

3. Как сказано в предыдущем комментарии, это может быть вариантом использования для реэкспорта модуля. Но это зависит от того, что это за модуль и для чего он предназначен. Для модуля, который не может извлечь выгоду из встряхивания дерева, import * as colors уже выполняет эту работу, не так ли?