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
и не имеет понятия, откуда идет бар (без клонирования и анализа всего проекта). 🌹