TS2693: ‘Promise’ only refers to a type, but is being used as a value here error typically occurs when you try to “use the Promise type like you would use the Promise constructor or an instance of a promise.”
To fix the TypeScript TS2693: ‘Promise’ only refers to a type, but is being used as a value here error, install the “es6-promise package and its type definitions.”
npm install --save es6-promise
npm install --save-dev @types/es6-promise
Import the es6-promise
package in your TypeScript file.
import 'es6-promise/auto';
const myPromise = new Promise((resolve, reject) => {
// Your code here
});
This solution ensures you have a Promise implementation available in environments that don’t natively support ES6 Promises.
However, if your target environment already supports ES6 Promises, you can fix this error by including the appropriate lib configuration in your tsconfig.json file.
{
"compilerOptions": {
"target": "es6", // or a later version like "es2017", "es2020", etc.
"module": "commonjs",
...
},
...
}
If you are targeting ES5, but your environment has native support for Promises, you can include the es2015.promise library in your tsconfig.json file.
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": [
"es2015.promise",
"dom",
"es5"
],
...
},
...
}
If you cannot modify your tsconfig.json file or you want to import the Promise type manually, you can install a separate type definition for promises.
The @types/es6-promise package provides type definitions for ES6-style Promises. Install it using the below command.
npm install --save-dev @types/es6-promise
Then, in your TypeScript file, you can import the Promise type:
import { Promise } from 'es6-promise';
const myPromise = new Promise((resolve, reject) => {
// Your code here
});
Common Places Where This Error Might Occur
Incorrectly creating a promise
// Wrong
let p = Promise<number>();
// Correct
let p = new Promise<number>((resolve, reject) => {
resolve(42);
});
Trying to call methods on the type itself
// Wrong
Promise.then(() => console.log('Done'));
// Correct (assuming `p` is a promise instance)
p.then(() => console.log('Done'));
Conclusion
- Ensure you are using the new keyword when creating a new promise.
- Make sure you call methods (like then, catch, etc.) on actual promise instances, not the type itself.
- Double-check any imports to ensure you’re importing the Promise constructor and not just the type, especially if you have custom typings or are using a library that might shadow the global Promise object.
That’s it!

Krunal Lathiya is a seasoned Computer Science expert with over eight years in the tech industry. He boasts deep knowledge in Data Science and Machine Learning. Versed in Python, JavaScript, PHP, R, and Golang. Skilled in frameworks like Angular and React and platforms such as Node.js. His expertise spans both front-end and back-end development. His proficiency in the Python language stands as a testament to his versatility and commitment to the craft.