Я тот, кто заметил, что прокладка finally
нарушает совместимость с Promise в этой связанной проблеме . Приятно видеть, что это привлекает внимание. Вот несколько вариантов:
1. Положитесь исключительно на типизацию библиотеки ядра TypeScript
tsconfig.json
{
"compilerOptions": {
"lib": ["DOM","ES5","ScriptHost", "es2018.promise"]
}
}
Установите прокладку, запустите полифилл один раз в начале вашего приложения и с тех пор используйте глобальный объект Promise
, а не продолжайте импортировать класс Promise
из es6-promise
. Я обнаружил, что это наиболее совместимый способ.
npm install --save es6-promise@latest
Обратите внимание, что es6-promise
в последние несколько выпусков связывал свои собственные типы, которые конфликтуют с типами встроенных в Promise
библиотек TypeScript.
2. Используйте более старую версию es6-promise
, которая не включает finally
shim
Примечание: конечно, это означает, что вы не можете использовать finally
{
"compilerOptions": {
"lib": ["DOM","ES5","ScriptHost"]
}
}
Установите последнюю версию es6-promise
до того, как они представили finally
, и используйте эти наборы:
npm install --save es6-promise@4.2.2 && npm install --save-dev @types/es6-promise@0.0.32
(Или иначе пропустите эти наборы и добавьте es2015.promise
к вашему массиву compilerOptions.lib
в tsconfig.json
.)