У меня возникают странные проблемы с Typescript, когда я импортирую вещи из файла, который их экспортирует. Иногда я экспортирую функцию, затем импортирую ее в другой файл, затем использую функцию, и она больше не является функцией. Когда я определяю функцию в одном и том же файле, внезапно эта функция становится функцией?!?!?
Почему функция перестает быть функцией при экспорте? У меня были похожие проблемы с классами тоже.
Сложная часть этой проблемы - я не могу воссоздать простой пример, потому что это происходит только тогда, когда я использую какой-то пакет более высокого уровня.
Например, у меня была похожая проблема с sequelize-typcript здесь: моя проблема с github с typcript-sequelize
Ниже приведены некоторые коды, демонстрирующие основную проблему, которую я имею с одним из декораторов из InversifyJS.
container.ts
import {fluentProvide} from "inversify-binding-decorators";
export const provideSingleton = (identifier: any) => {
return fluentProvide(identifier)
.inSingletonScope()
.done(true);
};
test.service.ts
import {provideSingleton} from './container'
@provideSingleton(TYPES.TEST)
export default class TestService {}
Самое странное, когда я помещаю provideSingleton
в тот же файл, что и TestService
, все работает!?!?!
В основном, чтобы воссоздать проблему, просто следуйте приведенному ниже примеру: inversify-binding-decorators - несколько раз используя @provideFluent . Однако в этом примере есть проблема, поэтому, пожалуйста, просмотрите эту проблему: Нужен пример fluentProvide . Приведенный выше provideSingleton
отражает изменения этого вопроса. Затем вы просто импортируете функцию provideSingleton
из другого файла, а не определяете ее так же, как в примере.
Может кто-нибудь объяснить мне, что мне не хватает? Почему некоторые экспортируемые товары не будут рассматриваться как их тип? Есть ли какой-то шаг, который я не вижу, чтобы NodeJS предпринял, чтобы сделать объект действительно экспортированным и, следовательно, другим? Могу ли я заставить функцию разрешаться как функцию, чтобы ее можно было использовать как таковую?
ENV:
NodeJS: 10,9,0
Машинопись: 3.0.1
Mac: 10.13.16