Sweetalert: Erreur de frappe TS2403 : les déclarations de variables suivantes doivent avoir le même type.

Créé le 25 janv. 2019  ·  22Commentaires  ·  Source: t4t5/sweetalert

Mise à niveau vers Angular 7 avec TypeScript 3.2.4 et j'obtiens maintenant ce qui suit chaque fois que je compile :

import swal from 'sweetalert';

swal({ ... });

ERREUR dans node_modules/sweetalert/typings/sweetalert.d.ts(4,9) : erreur TS2403 : les déclarations de variables suivantes doivent avoir le même type. La variable 'swal' doit être de type 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")', mais ici a le type 'SweetAlert'.

Si je modifie node_modules/sweetalert/typings/sweetalert.d.ts partir de...

import swal, { SweetAlert } from "./core";

declare global {
  const swal: SweetAlert;
  const sweetAlert: SweetAlert;
}

export default swal;
export as namespace swal;

... à ...

import swal, { SweetAlert } from "./core";

export default swal;
export as namespace swal;

... ça commence à fonctionner.

Des idées?

Commentaire le plus utile

Salut tout le monde,

Épargnez-vous l'effort et utilisez sweetalert 2 https://sweetalert2.github.io/

Tous les 22 commentaires

Même problème, même situation.

Cependant, j'ai remarqué que le simple fait de commenter la ligne export as namespace swal; permet également de la compiler. J'ai regardé les changelogs de TypeScript pour des indices...

Même problème, même situation.

Cependant, j'ai remarqué que le simple fait de commenter la ligne export as namespace swal; permet également de la compiler. J'ai regardé les changelogs de TypeScript pour des indices...

même problème
j'ai utilisé cette solution
mais je ne pense pas que cette solution soit correcte.

Même problème.

Même problème également. Les builds CI échouent à cause de cela.

J'ai le même problème lors de l'exécution sous OpenBSD. Oui, je ne connais pas un système d'exploitation grand public, mais la version de TypeScript disponible rend tout avec sweetalert inutilisable :(

J'ai le même problème lors de l'exécution sous OpenBSD. Oui, je ne connais pas un système d'exploitation grand public, mais la version de TypeScript disponible rend tout avec sweetalert inutilisable :(

@t4t5 Pouvez-vous jeter un œil à ce problème ?

Vivre cela aussi avec Angular 7

Une idée sur une solution de contournement en dehors de l'édition manuelle du fichier de définition ? Cela devient un peu fastidieux de ne pas oublier de le faire après chaque installation de clone / npm.

@bogdan-calapod Voici ce que j'ai fait comme solution de contournement, afin que notre build CI n'échoue pas :

  1. Téléchargez le fichier de script minifié Sweetalert ici (cliquez avec le bouton droit et enregistrez le lien sous sweetalert.min.js ).
  2. Placez sweetalert.min.js dans src/assets/scripts dans l'application Angular.
  3. Ajoutez src/assets/scripts/sweetalert.min.js à scripts entrée dans angular.json
  4. Dans tous les composants/services que vous souhaitez utiliser Sweetalert, ajoutez declare var swal: any; au-dessus de la déclaration de classe.
  5. Vous pouvez utiliser Sweetalert n'importe où dans le fichier en utilisant la variable globale swal , c'est- return swal({...}) dire
  6. Vous pouvez maintenant supprimer le package Sweetalert NPM puisque vous utilisez un fichier de script local : npm uninstall sweetalert --save

Salut tout le monde,

Épargnez-vous l'effort et utilisez sweetalert 2 https://sweetalert2.github.io/

Des mises à jour avec ce problème?

Salut tout le monde,

Épargnez-vous l'effort et utilisez sweetalert 2 https://sweetalert2.github.io/

Cela prend en charge 3 boutons ou plus ?

@DVGalarza cette solution de contournement n'a pas fonctionné pour moi. ReferenceError: "swal n'est pas défini" est ce que j'obtiens.

@alvarofelipe12 Dans le fichier dans declare var swal: any; en haut du fichier (sous les importations) ? Si tel est le cas, vérifiez également que sweetalert.min.js est référencé correctement dans la section 'scripts' de angular.json .

Mise à niveau vers Angular 7 avec TypeScript 3.2.4 et j'obtiens maintenant ce qui suit chaque fois que je compile :

import swal from 'sweetalert';

swal({ ... });

ERREUR dans node_modules/sweetalert/typings/sweetalert.d.ts(4,9) : erreur TS2403 : les déclarations de variables suivantes doivent avoir le même type. La variable 'swal' doit être de type 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")', mais ici a le type 'SweetAlert'.

Si je modifie node_modules/sweetalert/typings/sweetalert.d.ts partir de...

import swal, { SweetAlert } from "./core";

declare global {
  const swal: SweetAlert;
  const sweetAlert: SweetAlert;
}

export default swal;
export as namespace swal;

... à ...

import swal, { SweetAlert } from "./core";

export default swal;
export as namespace swal;

... ça commence à fonctionner.

Des idées?

mon alternative était de renommer const swal en const _swal

importer swal, { SweetAlert } à partir de "./core" ;

déclarer global {
const _swal : SweetAlert ;
const sweetAlert: SweetAlert;
}

exporter le swal par défaut ;
exporter en tant que swal d'espace de noms ;

bonjour !, meme probleme

J'ai corrigé ce problème en remplaçant les types sweetalert. J'ai ajouté un fichier dans le répertoire src nommé src/node_modules/sweetalert/index.d.ts

//this file is needed because the sweetalert typings need to be overwritten because they are broken
//the real fix here is to stop using sweetalert

declare global {
  const _swal: any;
  const sweetAlert: any;
}

export default _swal;
export as namespace swal;

Résolu en changeant cette ligne:

import swal from 'sweetalert';

à:

const swal = require('sweetalert');

ou (avec l'interface) :

import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = require('sweetalert');

J'ai le même problème dans Angular 10. Oui, le problème semble être dans sweetalert.d.ts car selon mon IDE, il y a une erreur, donc je ne pense pas que ce soit une mauvaise solution pour le commenter :

image

@drmencos Est-ce pour Node.js ? require ne fonctionne pas pour moi dans Angular 10.

Dans le fichier : node_modules> sweetalert> typings> sweetalert.d.ts
Commentaire : const swal : SweetAlert ;

importer swal, {SweetAlert} depuis "./core" ;

déclarer global {
// const swal: SweetAlert;
const sweetAlert: SweetAlert;
}

exporter le swal par défaut ;
exporter en tant que swal d'espace de noms ;

changer import 'sweetalert' en require('sweetalert') fonctionné pour moi.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

waldyrious picture waldyrious  ·  5Commentaires

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4Commentaires

voodoo6 picture voodoo6  ·  4Commentaires

krishnamraju picture krishnamraju  ·  3Commentaires

Untit1ed picture Untit1ed  ·  5Commentaires