新的 TypeScript 版本不包括 'window.navigator.msSaveBlob'
New TypeScript version does not include 'window.navigator.msSaveBlob'
我有一个 TypeScript 项目 (https://github.com/jmaister/excellentexport),它工作正常。
添加dependabot进程后,提示升级typescript:
Bump typescript from 4.3.4 to 4.4.3
但是,因为我正在维护的库引用了 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'.
我应该取消对旧版 Internet Explorer 的支持吗?是继续使用那些 IE 特定属性的方法吗?
我最近 运行 遇到了完全相同的问题,我找到的解决方案是扩展 global
命名空间中的 Navigator
接口,因此它仍然包含 msSaveBlob
,基于 TypeScript 在此处记录 msSaveBlob
的方式:MSFileSaver
这是我使用的代码:
declare global {
interface Navigator {
msSaveBlob?: (blob: any, defaultName?: string) => boolean
}
}
if (navigator.msSaveBlob) {
// use navigator.msSaveBlob
}
我在我的 appmodule.ts 文件中声明了全局命名空间,因为它在多个文件中使用,例如
declare global{
interface Navigator{
msSaveBlob:(blob: Blob,fileName:string) => boolean
}
}
调用文件看起来像这样**//就像你提到的那样抛出构建错误,
if (navigator.msSaveBlob) {
// IE 10+
navigator.msSaveBlob(blob, fileName);
}
我有一个 TypeScript 项目 (https://github.com/jmaister/excellentexport),它工作正常。
添加dependabot进程后,提示升级typescript:
Bump typescript from 4.3.4 to 4.4.3
但是,因为我正在维护的库引用了 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'.
我应该取消对旧版 Internet Explorer 的支持吗?是继续使用那些 IE 特定属性的方法吗?
我最近 运行 遇到了完全相同的问题,我找到的解决方案是扩展 global
命名空间中的 Navigator
接口,因此它仍然包含 msSaveBlob
,基于 TypeScript 在此处记录 msSaveBlob
的方式:MSFileSaver
这是我使用的代码:
declare global {
interface Navigator {
msSaveBlob?: (blob: any, defaultName?: string) => boolean
}
}
if (navigator.msSaveBlob) {
// use navigator.msSaveBlob
}
我在我的 appmodule.ts 文件中声明了全局命名空间,因为它在多个文件中使用,例如
declare global{
interface Navigator{
msSaveBlob:(blob: Blob,fileName:string) => boolean
}
}
调用文件看起来像这样**//就像你提到的那样抛出构建错误,
if (navigator.msSaveBlob) {
// IE 10+
navigator.msSaveBlob(blob, fileName);
}