ame*_*nil 19 node.js typescript
我已经使用了这个 msSaveOrOpenBlob 方法。它工作正常,但将打字稿更新到最新版本后,我收到多个错误,有两个错误。
window.navigator.msSaveOrOpenBlob(数据, 文件名);
错误 TS2322:类型“Promise<>”无法分配给类型“IPromise<>”。
解决办法是什么?
MMa*_*lke 42
@Heretic Monkey 的答案是正确的,但如果你只是想解决这个问题 - 因为你使用的是 TypeScript - 你可以any在调用 msSaveOrOpenBlob 之前将其转换为类型。
(window.navigator as any).msSaveOrOpenBlob(data, filename);
另外,您应该首先确保导航器对象确实具有该方法,因此:
const nav = (window.navigator as any);
if (nav.msSaveOrOpenBlob) {
nav.msSaveOrOpenBlob(data, filename);
}
Run Code Online (Sandbox Code Playgroud)
Her*_*key 10
msSaveOrOpenBlobNavigator是Microsoft 为 Internet Explorer 添加的该对象的专有附加内容。由于 Microsoft 正在逐步取消对 Internet Explorer 的支持,因此它也删除了对 TypeScript 附带的 lib.dom.d.ts 和 lib.es*.d.ts 文件中的许多非标准添加的支持。请参阅此 GitHub 问题,了解有关 DOM.d.ts 文件的更改。
正如有关该主题的 GitHub 问题中所指出的,您必须使用声明合并来向自己添加这些类型Navigator。
小智 0
这是我在 12 版本中更具体的角度的第一次开发,我在一个组件中创建了一个方法来下载 xlsx 文件,在 Chrome 中它可以工作,但在 IE 中它不起作用,我发现添加这一行资源管理器window.navigator.msSaveOrOpenBlob(data, filename);可以下载文件,但在VSC中标记错误,它是
类型“Navigator”上不存在属性“msSaveOrOpenBlob”
我更改了模块和库tsconfig.json,
"module": "es2020",
"lib": [
"es2020",
"dom"
]
Run Code Online (Sandbox Code Playgroud)
到:
"module": "es2015",
"lib": [
"es2015",
"dom"
]
Run Code Online (Sandbox Code Playgroud)
在代码window.navigator.msSaveOrOpenBlobVSC中标记相同
属性“msSaveOrOpenBlob”....”
但是当我执行 ng 时,它会工作并在 IE 和 Chrome 中下载 xlsx 文件。
| 归档时间: |
|
| 查看次数: |
26681 次 |
| 最近记录: |