Sweetalert: Error de tipificación TS2403: las declaraciones de variables posteriores deben tener el mismo tipo.

Creado en 25 ene. 2019  ·  22Comentarios  ·  Fuente: t4t5/sweetalert

Se actualizó a Angular 7 con TypeScript 3.2.4 y ahora obtengo lo siguiente cada vez que compilo:

import swal from 'sweetalert';

swal({ ... });

ERROR en node_modules / sweetalert / typings / sweetalert.d.ts (4,9): error TS2403: las declaraciones de variables posteriores deben tener el mismo tipo. La variable 'swal' debe ser del tipo 'typeof import ("C: / Projects / me / browser / node_modules / sweetalert / typings / sweetalert")', pero aquí tiene el tipo 'SweetAlert'.

Si edito node_modules/sweetalert/typings/sweetalert.d.ts de ...

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

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

export default swal;
export as namespace swal;

... a ...

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

export default swal;
export as namespace swal;

... empieza a funcionar.

¿Algunas ideas?

Comentario más útil

Hola a todos,

Ahórrese el esfuerzo y use sweetalert 2 https://sweetalert2.github.io/

Todos 22 comentarios

Mismo problema, misma situación.

Sin embargo, noté que con solo comentar la línea export as namespace swal; también se puede compilar. He estado mirando los registros de cambios de TypeScript en busca de pistas ...

Mismo problema, misma situación.

Sin embargo, noté que con solo comentar la línea export as namespace swal; también se puede compilar. He estado mirando los registros de cambios de TypeScript en busca de pistas ...

mismo problema
Utilicé esta solución
pero no creo que esta solución sea correcta.

Mismo problema.

También el mismo problema. Las compilaciones de CI fallan debido a esto.

Tengo este mismo problema cuando ejecuto bajo OpenBSD. Sí, no conozco un sistema operativo convencional, pero la versión de TypeScript disponible hace que cualquier cosa con sweetalert sea inutilizable :(

Tengo este mismo problema cuando ejecuto bajo OpenBSD. Sí, no conozco un sistema operativo convencional, pero la versión de TypeScript disponible hace que cualquier cosa con sweetalert sea inutilizable :(

@ t4t5 ¿Puedes echar un vistazo a este tema?

También experimentando esto con Angular 7

¿Alguna idea sobre una solución alternativa además de editar el archivo de definición manualmente? Se está volviendo un poco complicado recordar hacer eso después de cada instalación de clonación / npm.

@ bogdan-calapod Esto es lo que he estado haciendo como solución, para que nuestra compilación de CI no falle:

  1. Descargue el archivo de secuencia de comandos minificado de Sweetalert aquí (haga clic con el botón derecho y guarde el enlace como sweetalert.min.js ).
  2. Coloque sweetalert.min.js en src/assets/scripts en la aplicación Angular.
  3. Agregue src/assets/scripts/sweetalert.min.js a scripts entrada en angular.json
  4. En cualquier componente / servicio que desee utilizar Sweetalert, agregue declare var swal: any; encima de la declaración de clase.
  5. Puede usar Sweetalert en cualquier parte del archivo usando la variable global swal , es decir, return swal({...})
  6. Ahora puede eliminar el paquete Sweetalert NPM ya que está utilizando el archivo de secuencia de comandos local: npm uninstall sweetalert --save

Hola a todos,

Ahórrese el esfuerzo y use sweetalert 2 https://sweetalert2.github.io/

¿Alguna actualización con este problema?

Hola a todos,

Ahórrese el esfuerzo y use sweetalert 2 https://sweetalert2.github.io/

¿Tiene soporte para 3 botones o más?

@DVGalarza, esta solución no funcionó para mí. ReferenceError: "el trago no está definido" es lo que obtengo.

@ alvarofelipe12 En el archivo en el que está intentando usar 'swal', ¿agregó declare var swal: any; al principio del archivo (debajo de las importaciones)? Si es así, compruebe también que se hace referencia a sweetalert.min.js correctamente en la sección 'scripts' de angular.json .

Se actualizó a Angular 7 con TypeScript 3.2.4 y ahora obtengo lo siguiente cada vez que compilo:

import swal from 'sweetalert';

swal({ ... });

ERROR en node_modules / sweetalert / typings / sweetalert.d.ts (4,9): error TS2403: las declaraciones de variables posteriores deben tener el mismo tipo. La variable 'swal' debe ser del tipo 'typeof import ("C: / Projects / me / browser / node_modules / sweetalert / typings / sweetalert")', pero aquí tiene el tipo 'SweetAlert'.

Si edito node_modules/sweetalert/typings/sweetalert.d.ts de ...

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

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

export default swal;
export as namespace swal;

... a ...

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

export default swal;
export as namespace swal;

... empieza a funcionar.

¿Algunas ideas?

mi alternativa era cambiar el nombre de const swal a const _swal

importar tragar, {SweetAlert} de "./core";

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

exportar gol por defecto;
exportar como espacio de nombres tragar;

hola, mismo problema

Arreglé esto anulando los tipos de sweetalert. Agregué un archivo en el directorio src llamado 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;

Lo resolvió cambiando esta línea:

import swal from 'sweetalert';

a:

const swal = require('sweetalert');

o (con la interfaz):

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

Tengo el mismo problema en Angular 10. Sí, el problema parece estar en sweetalert.d.ts ya que, según mi IDE, hay un error, así que no creo que sea una mala solución comentarlo:

image

@drmencos ¿ require no me funciona en Angular 10.

En el archivo: node_modules> sweetalert> typings> sweetalert.d.ts
Comentario: const swal: SweetAlert;

importar tragar, {SweetAlert} de "./core";

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

exportar gol por defecto;
exportar como espacio de nombres tragar;

cambiar import 'sweetalert' a require('sweetalert') funcionó para mí.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

mateuszjarzewski picture mateuszjarzewski  ·  4Comentarios

sastrahost picture sastrahost  ·  5Comentarios

waldyrious picture waldyrious  ·  5Comentarios

daftspunk picture daftspunk  ·  4Comentarios

rapeflower picture rapeflower  ·  4Comentarios