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";

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

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

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

import * from "./Utils";

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

Ответы на вопрос(1)

Решение Вопроса

импорт * из

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

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

 Micah Zoltu31 июл. 2019 г., 14:30
Я думаю, что это хороший вопрос, кроме последней строки, и на него стоит ответить, несмотря на просьбу о плохой практике. Они могли бы так же легко попросить о возможности сделатьimport { utils } from './Utils'  У меня есть библиотека, состоящая из нескольких файлов. Я хотел бы, чтобы экспорт из библиотеки был распределен по пространствам имен по файлам, а не по всей совокупности в единое пространство имен. Я считаю, что это то же самое, что хочет ОП.

Ваш ответ на вопрос