首页 > 解决方案 > 如何在 TypeScript 中更改本机窗口对象类型?

问题描述

我想将嵌套对象添加到本机 window.navigator 对象。但它显示了错误:

TS2687:“导航器”的所有声明必须具有相同的修饰符。

看起来它与另一个声明有冲突。如何修改已经声明的接口?

我的index.d.ts:

    interface INavigator extends Navigator {
        usb?: {
            getDevices?: () => Array<string>
        }
    }
    
    declare global {
        interface Window {
            navigator: Navigator
        }
    }

标签: typescript

解决方案


您应该只增加原始Navigator界面,它将自动合并并应用于Window.Navigator

declare global {
  interface Navigator {
    usb: {
      getDevices: () => Array<string>
    }
  }
}

const navigator = window.navigator;
const devices = navigator.usb.getDevices();


推荐阅读