物业" usb"类型" Navigator"中不存在在angular2打字稿项目中

时间:2017-09-27 11:44:06

标签: angular typescript

我使用下面的代码只是为了查看usb端口上连接的设备。获取错误"属性usb在Navigator"类型上不存在在编译时我运行' ng'命令提示符中的命令。

ngOnInit() {
    async () => {
        let devices = await navigator.usb.getDevices();
        devices.forEach(device => {
          // Add |device| to the UI.
          console.log(device);
        });
    }
}

3 个答案:

答案 0 :(得分:2)

如果您确定navigator.usb存在,则可以扩展界面以包含一些类型信息:

interface Navigator {
    usb: {
        getDevices(): any[];
    }
}

这将解决编译时错误(但如果usb不存在则会导致运行时错误。)

接口需要放在同一个公共根...所以如果你在一个模块中,你可能需要使用:

declare global {
    interface Navigator {
        usb: {
            getDevices(): any[];
        }
    }
}

答案 1 :(得分:1)

最好的解决方案是使用@types/w3c-web-usb键入程序包。

使用任一支纱将其添加到您的项目中

yarn add --dev @types/w3c-web-usb

或npm

npm install --save-dev @types/w3c-web-usb

答案 2 :(得分:1)

yarn add -D @types/w3c-web-usb

npm install --save-dev @types/w3c-web-usb

然后,在打字稿文件的顶部添加以下指令:

/// <reference types="w3c-web-usb" />