I'm trying to use the new dynamic import()
function in TypeScript, but I get the following error:
TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your
--lib
option.
I could include the ES2015.promise
lib in my tsconfig like the message suggests, but that would make me lose type safety as I'm using Bluebird promises.
I know it is possible to use Bluebird for async/await
in TypeScript, so I suppose this should also work the same way.
The message also mentions this:
Make sure you have a declaration for the 'Promise' constructor or [...]
Is it possible to declare the Bluebird constructor to be used as the Promise constructor in TS?
Example code:
import * as Bluebird from 'bluebird'; // This works async function exampleAsync(): Bluebird<number> { const result = await Bluebird.resolve(5); return result; } // This does not import('jquery').then($ => { console.log($.fn.jquery); });
TSConfig:
{ "compilerOptions": { "module": "commonjs", "target": "es5", "removeComments": true, "sourceMap": true, "alwaysStrict": true, "forceConsistentCasingInFileNames": true, "noUnusedLocals": true, "noUnusedParameters": true, "strictNullChecks": true, "allowJs": true, "typeRoots": ["node_modules/@types"], "lib": ["es5", "dom", "es2015.collection"] }, "exclude": ["node_modules"] }