Лучший способ получить правильную инструкцию импорта для фактического значения из ThirdPartySDK
- это реорганизовать скрипт в модуль, который экспортирует это значение. Следующий фрагмент позволяет использовать оператор импорта, как показано:
export const ThirdPartySDK = {
foo() { console.log('Doing foo'); }
};
Для больших библиотек рефакторинг не всегда так прост, поэтому я вижу 2 подхода, которые не требуют слишком много рефакторинга:
1. Экспортируйте ThirdPartySDK
переменную
Вы можете просто сделать модуль из файла IIFE, экспортировав текущую переменную IThirdPartySDK
(возвращаемую IIFE), а затем импортировать ее, как показано:
export const ThirdPartySDK = (function() {
var _export = {};
// Add some methods to export
return _export;
})();
Обратите внимание, что если вы хотите получить некоторую полезную информацию о форме ThirdPartySDK
, вам необходимо добавить аннотацию типа в объявление const
, и если SomeType
(см. Ниже) еще не существует, вы '' Я должен написать это сам:
export const ThirdPartySDK: SomeType = (function() {
// ...
В этот момент Typescript начнет жаловаться на то, что выражение IIFE не может быть присвоено SomeType; быстрое «решение», позволяющее машинописи делать вид, что выражение выражается значением типа SomeType
с использованием ключевого слова as
:
export const ThirdPartySDK: SomeType = (function() {
// ...
})() as SomeType;
2. Сохраните тег <script>
и объявите переменную
Другой вариант - сохранить тег script, ничего не импортировать и объявить переменную и ее ожидаемый тип в машинописи:
(но в этом случае вам, возможно, придется самим давать определения типов)
interface SomeType {
// SDK type shape goes here...
}
declare const ThirdPartySDK: SomeType;