Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

@Types/Sequelize Error TS1086: An accessor cannot be declared in ambient context

Tags:

I have a project that shows this error when I run 'tsc':

../modules/node_modules/sequelize/types/lib/transaction.d.ts:33:14 - error TS1086: An accessor cannot be declared in an ambient context.  33   static get LOCK(): LOCK;                 ~~~~  ../modules/node_modules/sequelize/types/lib/transaction.d.ts:40:7 - error TS1086: An accessor cannot be declared in an ambient context.  40   get LOCK(): LOCK;          ~~~~ 

My versions are:

  • "@types/sequelize": "^4.28.6"
  • "sequelize": "^5.8.10"
  • "sequelize-typescript": "1.0.0-beta.4"

The project works fine with nodemon but fails when I try to compile the typescript. Anyone knows this error?

Thanks.

like image 211
Josel567 Avatar asked Nov 11 '19 13:11

Josel567


2 Answers

I have Angular 8. it is working with typescript version of 3.4.5. so solve this issue do below steps.

step 1) go to the tsconfig.json file

step 2) add skipLibCheck: true in "compilerOptions" object. It works for me.

"compilerOptions": {     "module": "commonjs",     "moduleResolution": "node",     "strict": true,     "target": "es5",     "declaration": true,     "declarationDir": "dist-debug/",     "skipLibCheck": true, /// Needs to be true to fix wrong alias types being used    }, 
like image 167
krishn Patel Avatar answered Sep 27 '22 17:09

krishn Patel


you need to use typescript 3.7.

from typescript 3.7 release notes:

To detect the issue around accessors, TypeScript 3.7 will now emit get/set accessors in .d.ts files so that in TypeScript can check for overridden accessors.  

so presumably sequelize was compiled with typescript 3.7 and emits definition files that previous versions don't understand. So you'll need to upgrade to typescript 3.7 or use an earlier version of sequelize.

like image 36
Aviad Hadad Avatar answered Sep 27 '22 17:09

Aviad Hadad