0

我一直在使用 web midi API 从我插入计算机的外部硬件中成功读取 MIDI 消息。以下代码在我将其放入浏览器控制台时有效,但仅在控制台中。

当我在打字稿中编写相同的代码时(它编译时没有错误),它什么也不做。有谁知道为什么会这样?我在同一个文件中编写的所有其他 T 都可以编译并且工作正常,除了这个。我正在使用 Webpack 和 Webpack 开发服务器来捆绑我的 Ts。我的问题会与此有关吗?我没有太多使用 Ts 或 Webpack 的经验。

这是有效的代码:

navigator.requestMIDIAccess()
  .then(access => {
    console.log(access)
    // getting devices
    const devices = access.inputs.values()
    for (const device of devices){
      console.log("there is a device")
      console.log(device)
      device.onmidimessage = onMidiMessage
    }
    console.log(access.inputs.values, "the values")
  })
  .catch(err => console.log(err))

function onMidiMessage(message){
  console.log(message)
}

我用过的Ts代码和这个基本一样,只是声明了devices和的类型message: any。我知道这可能不是编写 Ts 的最佳方式,但我不确定如何取消这些类型。为了帮助,我安装了@types/webmidi

4

0 回答 0