Sweetalert: Erro de digitação TS2403: as declarações de variáveis ​​subsequentes devem ter o mesmo tipo.

Criado em 25 jan. 2019  ·  22Comentários  ·  Fonte: t4t5/sweetalert

Fiz upgrade para Angular 7 com TypeScript 3.2.4 e agora recebo o seguinte sempre que compilar:

import swal from 'sweetalert';

swal({ ... });

ERRO em node_modules / sweetalert / typings / sweetalert.d.ts (4,9): erro TS2403: Declarações de variáveis ​​subsequentes devem ter o mesmo tipo. A variável 'swal' deve ser do tipo 'typeof import ("C: / Projects / me / browser / node_modules / sweetalert / typings / sweetalert")', mas aqui tem o tipo 'SweetAlert'.

Se eu editar 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;

... para ...

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

export default swal;
export as namespace swal;

... começa a funcionar.

Alguma ideia?

Comentários muito úteis

Olá a todos,

Poupe esforços e use sweetalert 2 https://sweetalert2.github.io/

Todos 22 comentários

Mesmo problema, mesma situação.

No entanto, percebi que apenas comentar a linha export as namespace swal; também permite a compilação. Estive olhando os changelogs do TypeScript em busca de alguma pista ...

Mesmo problema, mesma situação.

No entanto, percebi que apenas comentar a linha export as namespace swal; também permite a compilação. Estive olhando os changelogs do TypeScript em busca de alguma pista ...

o mesmo problema
Eu usei esta solução
mas não acho que essa solução seja correta.

O mesmo problema.

Também o mesmo problema. As compilações de CI falham por causa disso.

Eu tenho o mesmo problema ao executar no OpenBSD. Sim, eu não conheço um sistema operacional convencional, mas a versão do TypeScript disponível torna qualquer coisa com sweetalert inutilizável :(

Eu tenho o mesmo problema ao executar no OpenBSD. Sim, eu não conheço um sistema operacional convencional, mas a versão do TypeScript disponível torna qualquer coisa com sweetalert inutilizável :(

@ t4t5 Você pode dar uma olhada neste assunto?

Também experimentando isso com Angular 7

Alguma idéia de uma solução alternativa além de editar o arquivo de definição manualmente? Está se tornando um pouco incômodo lembrar de fazer isso após cada instalação de clone / npm.

@ bogdan-calapod Aqui está o que tenho feito como uma solução alternativa, para que nossa construção de CI não falhe:

  1. Baixe o arquivo de script reduzido Sweetalert aqui (clique com o botão direito e salve o link como sweetalert.min.js ).
  2. Coloque sweetalert.min.js em src/assets/scripts no aplicativo Angular.
  3. Adicionar src/assets/scripts/sweetalert.min.js a scripts entrada em angular.json
  4. Em quaisquer componentes / serviços que você deseja usar Sweetalert, adicione declare var swal: any; acima da declaração da classe.
  5. Você pode usar Sweetalert em qualquer lugar no arquivo usando a variável global swal , ou seja, return swal({...})
  6. Agora você pode remover o pacote Sweetalert NPM, pois está usando o arquivo de script local: npm uninstall sweetalert --save

Olá a todos,

Poupe esforços e use sweetalert 2 https://sweetalert2.github.io/

Alguma atualização com este problema?

Olá a todos,

Poupe esforços e use sweetalert 2 https://sweetalert2.github.io/

Isso tem suporte para 3 botões ou mais?

@DVGalarza esta solução alternativa não funcionou para mim. ReferenceError: "swal is not defined" é o que estou recebendo.

@ alvarofelipe12 No arquivo que você está tentando usar 'swal', você adicionou declare var swal: any; ao topo do arquivo (abaixo das importações)? Em caso afirmativo, verifique também se sweetalert.min.js está referenciado corretamente na seção 'scripts' de angular.json .

Fiz upgrade para Angular 7 com TypeScript 3.2.4 e agora recebo o seguinte sempre que compilar:

import swal from 'sweetalert';

swal({ ... });

ERRO em node_modules / sweetalert / typings / sweetalert.d.ts (4,9): erro TS2403: Declarações de variáveis ​​subsequentes devem ter o mesmo tipo. A variável 'swal' deve ser do tipo 'typeof import ("C: / Projects / me / browser / node_modules / sweetalert / typings / sweetalert")', mas aqui tem o tipo 'SweetAlert'.

Se eu editar 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;

... para ...

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

export default swal;
export as namespace swal;

... começa a funcionar.

Alguma ideia?

minha alternativa era renomear const swal para const _swal

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

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

exportação padrão swal;
exportar como namespace swal;

olá! mesmo problema

Corrigi isso substituindo os tipos sweetalert. Eu adicionei um arquivo no diretório src chamado 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;

Resolvido alterando esta linha:

import swal from 'sweetalert';

para:

const swal = require('sweetalert');

ou (com a interface):

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

Estou tendo o mesmo problema no Angular 10. Sim, o problema parece estar em sweetalert.d.ts , de acordo com meu IDE, há um erro, então não acho que seja uma má solução comentá-lo:

image

@drmencos Isso é para Node.js? require não funciona para mim no Angular 10.

No arquivo: node_modules> sweetalert> typings> sweetalert.d.ts
Comentário: const swal: SweetAlert;

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

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

exportação padrão swal;
exportar como namespace swal;

alterar import 'sweetalert' para require('sweetalert') funcionou para mim.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4Comentários

vmitchell85 picture vmitchell85  ·  6Comentários

krishnamraju picture krishnamraju  ·  3Comentários

voodoo6 picture voodoo6  ·  4Comentários

yrshaikh picture yrshaikh  ·  4Comentários