Typescript: экспорт всех функций в пространстве имен

допустим, у меня есть файл typescript Utils с кучей экспортируемых функций:

export function utilOne(){}
export function utilTwo(){}

я добавил индекс.d.TS файл в эту папку, куда я экспортирую * из файла Utils:

export * from './Utils';

в моих других классах я хотел бы получить доступ к функциям utilOne и utilTwo через пространство имен utils, например:

utils.utilOne();

Я знаю, что могу импортировать его так:

import * as utils from "./Utils";

однако, поскольку я буду использовать utils много, я хотел бы иметь возможность экспорт utils в пространстве имен, что-то вроде:

export {* as utils} from './Utils';   // this doesn't work

и затем использовать:

import * from "./Utils";

Однако экспорт {*как utils} не работает. Я мог бы поместить все функции Utils в модуль "utils" и экспортировать его, но я не уверен, что это хорошая практика. Есть ли правильный способ сделать это?

1 ответов


импорт * от

нет. Глобальный импорт считается плохой практикой даже в тех языках, которые его поддерживают. (например, python почему "импорт *" плохо?)

JavaScript / TypeScript не поддерживает его. Ведь его довольно полезно увидеть foo.bar и знайте, что бар исходит от foo вместо bar и не имея понятия, откуда идет бар (без клонирования и анализа всего проекта).