TypeScript 中如何为 Navigator 厂商专属属性做类型声明?
解决方案
1. 扩展Navigator类型(推荐方案)
TypeScript 标准的Navigator类型默认没有定义浏览器前缀的mozConnection、webkitConnection属性,你可以通过接口合并补充类型声明:
你可以在项目的全局类型声明文件(比如typings.d.ts)中添加以下代码,或者直接在当前代码文件顶部添加:
declare interface Navigator { mozConnection?: NetworkInformation webkitConnection?: NetworkInformation }
其中NetworkInformation就是navigator.connection对应的标准内置类型,不需要额外定义,它已经包含在lib.dom.d.ts中。
2. 给connection添加类型标注
补充完上面的类型声明后,就可以正常标注类型了:
const connection: NetworkInformation | undefined = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
3. 临时快速解决(不推荐)
如果只是临时调试不想扩展全局类型,可以直接用类型断言绕开检查:
const connection = navigator.connection || (navigator as any).mozConnection || (navigator as any).webkitConnection;
该方案会丢失类型检查,不建议长期使用。
内容的提问来源于stack exchange,提问作者John Winston
相关产品推荐
相关产品推荐

