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

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

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

Я добавил файл index.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";

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

Ответ 1

import * from

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

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