Как импортировать объявленную глобальную переменную в машинописи с помощью веб-пакета - PullRequest
0 голосов
/ 23 сентября 2019

У меня проблемы с импортом объявленной глобальной переменной.

На нашем веб-сайте есть сторонний фреймворк, который интегрируется только с использованием тега и создает глобальную переменную в окне, например window.thirdParty.Таким образом, использование выглядит так: thirdParty.methodOne() Я написал файл определения Third-Party.d.ts, который выглядит следующим образом:

import { ITrirdPartyFramework } from './third-party-definitions/third-party-framework';

export interface ITrirdPartyFramework {
   methodOne():void,
}

тогда у меня есть файл (global-variables.ts), который определяет глобальные переменные:

export declare const thirdParty: ITrirdPartyFramework;

и, наконец, я хочу использовать его в своих модулях:

import { thirdParty } from './global-variables';

export const myFunction = () => {
    thirdParty.methodOne();
}

Проблема в том, что webpack компилирует определения как обычные модули, и во время выполнения я получаю ошибку, потому что скомпилированный кодвыглядит так:

_global_variables__WEBPACK_IMPORTED_MODULE_3__["thirdParty"].methodOne();

вместо

thirdParty.methodOne();

Знаете ли вы, как заставить webpack игнорировать определения или как справиться с этой ситуацией?

1 Ответ

0 голосов
/ 24 сентября 2019

Вам не нужно импортировать файлы * .d.ts, они видны глобально.
В этих файлах можно хранить только определения типов, но не реализацию

Следующие шаги решат вашу проблему:

  1. Переименовать global-variables.ts в global-variables.d.ts
  2. удалить ключевое слово export из global-variables.d.ts
  3. удалить строку import { thirdParty } from './global-variables';
...