web-dev-qa-db-fra.com

@ Types / Sequelize Error TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant

J'ai un projet qui montre cette erreur lorsque j'exécute '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;
         ~~~~

Mes versions sont:

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

Le projet fonctionne bien avec nodemon mais échoue lorsque j'essaie de compiler le TypeScript. Quelqu'un connaît cette erreur?

Merci.

9
Josel567

vous devez utiliser TypeScript 3.7.

à partir des notes de publication de TypeScript 3.7:

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.

donc vraisemblablement sequelize a été compilé avec TypeScript 3.7 et émet des fichiers de définition que les versions précédentes ne comprennent pas. Vous devrez donc effectuer une mise à niveau vers TypeScript 3.7 ou utiliser une version antérieure de sequelize.

13
Aviad Hadad

J'ai Angular 8. il fonctionne avec la version TypeScript de 3.4.5. alors résolvez ce problème, suivez les étapes ci-dessous.

étape 1) allez dans le fichier tsconfig.json

étape 2) ajouter skipLibCheck: true dans l'objet "compilerOptions". Ça marche pour moi.

"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

  },
13
krishn Patel

Réglage "skipLibCheck": true a fonctionné pour moi.

4
kimamula