类型“ {}”的参数不能分配给类型“ Uint8Array”的参数

时间:2019-11-24 15:24:49

标签: node.js typescript npm yarnpkg es6-modules

我试图克隆并运行一个开源项目存储库,并且很难解决此问题,npm start失败,并显示“ compile failed error”,并指出以下原因。

类型'{}'的参数不能分配给类型'Uint8Array'的参数

    const [encChallenge] = await waitEvent(socket, 'data') 
    const challenge = decrypt(encChallenge) //This line causes the error

遵循decrypt函数


  /** Decrypt data used shared key */
  function decrypt(data: Uint8Array) {
    if (!sharedKey) return null
    const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES)
    const box = data.slice(sodium.crypto_box_NONCEBYTES, data.length)
    const msg = crypto.decrypt(box, nonce, sharedKey)
    return msg
  }

将参数更改为any可以解决该问题,但我不能这样做, 如何将参数转换为Unit8Array?

1 个答案:

答案 0 :(得分:0)

只要encChallenge是一个类型化数组,它表示8位无符号整数的数组,那么您应该可以:

const [encChallenge] = await waitEvent(socket, 'data') 
const challenge = decrypt(new Uint8Array(encChallenge);)

真的,我会在waitEvent方法中将encChallenge Uint8Array设为强类型waitEvent,然后将其抽象掉,并且如果您再次使用它,则总是该类型。