新的 TypeScript 版本不包括“window.navigator.msSaveBlob”

jor*_*gos 26 dependencies typescript

我有一个 TypeScript 项目(https://github.com/jmaister/excellentexport)并且工作正常。

添加dependabot进程后,建议升级typescript:

Bump typescript from 4.3.4 to 4.4.3
Run Code Online (Sandbox Code Playgroud)

但是,由于我正在维护的库引用了 Internet Explorer 旧的 Internet Explorer 属性,因此无法使用新版本进行构建。

以下是构建错误的示例:

src/excellentexport.ts:143:30 - error TS2339: Property 'msSaveBlob' does not exist on type 'Navigator'.
143         if (window.navigator.msSaveBlob) {
                                 ~~~~~~~~~~
src/excellentexport.ts:145:30 - error TS2339: Property 'msSaveBlob' does not exist on type 'Navigator'.
145             window.navigator.msSaveBlob(blob, filename);
                                 ~~~~~~~~~~
src/excellentexport.ts:278:34 - error TS2339: Property 'msSaveBlob' does not exist on type 'Navigator'.
Run Code Online (Sandbox Code Playgroud)

我应该删除对旧版 Internet Explorer 的支持吗?有办法继续使用那些 IE 特定属性吗?

Mar*_*nna 39

我最近遇到了完全相同的问题,我找到的解决方案是扩展命名空间Navigator中的接口global,因此它仍然包含msSaveBlob,基于msSaveBlobTypeScript 的记录方式:MSFileSaver

这是我使用的代码:

declare global {
    interface Navigator {
        msSaveBlob?: (blob: any, defaultName?: string) => boolean
    }
}

if (navigator.msSaveBlob) {
    // use navigator.msSaveBlob
}
Run Code Online (Sandbox Code Playgroud)

  • 为我工作谢谢。我只是将其直接放在组件中的导入之后。 (3认同)