Sweetalert: 输入错误 TS2403:后续变量声明必须具有相同的类型。

创建于 2019-01-25  ·  22评论  ·  资料来源: t4t5/sweetalert

升级到带有 TypeScript 3.2.4 的 Angular 7,现在每当我编译时都会得到以下信息:

import swal from 'sweetalert';

swal({ ... });

node_modules/sweetalert/typings/sweetalert.d.ts(4,9) 中的错误:错误 TS2403:后续变量声明必须具有相同的类型。 变量 'swal' 的类型必须是 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")',但这里的类型是 'SweetAlert'。

如果我从...编辑node_modules/sweetalert/typings/sweetalert.d.ts

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;

...它开始工作。

有任何想法吗?

最有用的评论

大家好,

节省自己的精力并使用sweetalert 2 https://sweetalert2.github.io/

所有22条评论

同样的问题,同样的情况。

但是,我注意到只需注释掉export as namespace swal;也可以编译。 我一直在查看 TypeScript 更新日志以寻找任何线索......

同样的问题,同样的情况。

但是,我注意到只需注释掉export as namespace swal;也可以编译。 我一直在查看 TypeScript 更新日志以寻找任何线索......

同样的问题
我使用了这个解决方案
但我不认为这个解决方案是正确的。

同样的问题。

也是同样的问题。 因此 CI 构建失败。

在 OpenBSD 下运行时,我遇到了同样的问题。 是的,我知道不是主流操作系统,但是可用的 TypeScript 版本使得任何带有 Sweetalert 的东西都无法使用:(

在 OpenBSD 下运行时,我遇到了同样的问题。 是的,我知道不是主流操作系统,但是可用的 TypeScript 版本使得任何带有 Sweetalert 的东西都无法使用:(

@t4t5你能看看这个问题吗?

也在 Angular 7 中体验到这一点

除了手动编辑定义文件之外,还有其他解决方法吗? 在每次克隆/ npm 安装后记住这样做变得有点麻烦。

@bogdan-calapod 以下是我一直在做的一种解决方法,以便我们的 CI 构建不会失败:

  1. 在此处下载 Sweetalert 缩小脚本文件(右键单击并将链接另存为sweetalert.min.js )。
  2. sweetalert.min.js src/assets/scripts放在 Angular 应用程序中的
  3. 添加src/assets/scripts/sweetalert.min.jsscripts入门angular.json
  4. 在要使用 Sweetalert 的任何组件/服务中,在类声明上方添加declare var swal: any;
  5. 您可以使用全局变量swal在文件中的任何位置使用 Sweetalert,即return swal({...})
  6. 您现在可以删除 Sweetalert NPM 包,因为您使用的是本地脚本文件: npm uninstall sweetalert --save

大家好,

节省自己的精力并使用sweetalert 2 https://sweetalert2.github.io/

此问题有任何更新吗?

大家好,

节省自己的精力并使用sweetalert 2 https://sweetalert2.github.io/

这是否支持 3 个或更多按钮?

@DVGalarza这种解决方法对我不起作用。 ReferenceError:“swal 未定义”是我得到的。

@alvarofelipe12在您尝试使用 'swal' 的文件中,您是否将declare var swal: any;到文件顶部(在导入下方)? 如果是这样,还要检查sweetalert.min.js的“脚本”部分中是否正确引用了angular.json

升级到带有 TypeScript 3.2.4 的 Angular 7,现在每当我编译时都会得到以下信息:

import swal from 'sweetalert';

swal({ ... });

node_modules/sweetalert/typings/sweetalert.d.ts(4,9) 中的错误:错误 TS2403:后续变量声明必须具有相同的类型。 变量 'swal' 的类型必须是 'typeof import("C:/Projects/me/browser/node_modules/sweetalert/typings/sweetalert")',但这里的类型是 'SweetAlert'。

如果我从...编辑node_modules/sweetalert/typings/sweetalert.d.ts

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;

...它开始工作。

有任何想法吗?

我的替代方法是将 const swal 重命名为 const _swal

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

声明全局{
const _swal: SweetAlert;
const sweetAlert: SweetAlert;
}

导出默认值;
导出为命名空间 swal;

你好!,同样的问题

我通过覆盖 sweetalert 类型来解决这个问题。 我在 src 目录中添加了一个名为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;

通过更改此行解决了它:

import swal from 'sweetalert';

到:

const swal = require('sweetalert');

或(使用界面):

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

我在 Angular 10 中遇到了同样的问题。是的,根据我的 IDE,问题似乎出在sweetalert.d.ts中,有一个错误,所以我认为评论它不是一个糟糕的解决方案:

image

@drmencos是用于 Node.js 的吗? require在 Angular 10 中对我不起作用。

在文件中:node_modules>sweetalert>typings>sweetalert.d.ts
评论:const swal:SweetAlert;

从“./core”导入 swal,{SweetAlert};

声明全局{
// const swal: SweetAlert;
const sweetAlert: SweetAlert;
}

导出默认值;
导出为命名空间 swal;

import 'sweetalert'更改require('sweetalert')对我有用。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

vmitchell85 picture vmitchell85  ·  6评论

waldyrious picture waldyrious  ·  5评论

AlexV525 picture AlexV525  ·  4评论

mateuszjarzewski picture mateuszjarzewski  ·  4评论

jamieson99 picture jamieson99  ·  3评论