#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
уже выполняет эту работу, не так ли?