收到错误“未知”类型的参数不可分配给“错误 | 类型”的参数 无效的'

Avi*_*ppo 6 typescript reactjs web3js

我对打字稿相当陌生,所以我收到一个错误,指出“未知”类型的参数不能分配给“错误 | 类型”的参数。null',我不明白为什么我会得到这个。我该如何解决这个问题?

export function subscribeToAccount(
  web3: Web3,
  callback: (error: Error | null, account: string | null) => any
) {
  const id = setInterval(async () => {
    try {
      const accounts = await web3.eth.getAccounts();
      callback(null, accounts[0]);
    } catch (error) {
      callback(error, null);
    }
  }, 1000);

  return () => {
    clearInterval(id);
  };
}

Run Code Online (Sandbox Code Playgroud)

Owl*_*Owl 9

该错误是由这一行引起的:

callback(error, null);
Run Code Online (Sandbox Code Playgroud)

errorfrom的类型catch (error)unknown,并且您指定该callback函数接受Error | null作为其第一个参数,因此会出现错误。

在这里阅读更多内容


简单,但不建议修复

strict将值设置为false您的tsconfig文件


另一种简单但更好的方法

明确指定error类型any

try {
  const accounts = await web3.eth.getAccounts();
  callback(null, accounts[0]);
} catch (error: any) {
  callback(error, null);
}
Run Code Online (Sandbox Code Playgroud)

最好的办法

在 catch 内进行类型检查

try {
  const accounts = await web3.eth.getAccounts();
  callback(null, accounts[0]);
} catch (error) {
  if (error instanceof Error ) {
    callback(error, null);
  } else {
    // handle
  }
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

11299 次

最近记录:

3 年,4 月 前