收到错误 'unknown' 类型的参数无法分配给 'Error | null' 类型的参数
Getting an error Argument of type 'unknown' is not assignable to parameter of type 'Error | null'
我是 typescript 的新手,所以我收到一条错误消息,提示 'unknown' 类型的参数不可分配给 'Error | 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);
};
}
错误是由这一行引起的:
callback(error, null);
来自 catch (error)
的 error
的类型是 unknown
,并且您指定 callback
函数接受 Error | null
作为其第一个参数,因此为什么错误。
阅读更多here
简单,但不推荐修复
在您的 tsconfig
文件中将 strict
值设置为 false
另一种简单但更好的方法
明确指定 error
类型为 any
try {
const accounts = await web3.eth.getAccounts();
callback(null, accounts[0]);
} catch (error: any) {
callback(error, null);
}
最佳方式
在 catch 中进行类型检查
try {
const accounts = await web3.eth.getAccounts();
callback(null, accounts[0]);
} catch (error) {
if (error instanceof Error ) {
callback(error, null);
} else {
// handle
}
}
我是 typescript 的新手,所以我收到一条错误消息,提示 'unknown' 类型的参数不可分配给 'Error | 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);
};
}
错误是由这一行引起的:
callback(error, null);
来自 catch (error)
的 error
的类型是 unknown
,并且您指定 callback
函数接受 Error | null
作为其第一个参数,因此为什么错误。
阅读更多here
简单,但不推荐修复
在您的 tsconfig
文件中将 strict
值设置为 false
另一种简单但更好的方法
明确指定 error
类型为 any
try {
const accounts = await web3.eth.getAccounts();
callback(null, accounts[0]);
} catch (error: any) {
callback(error, null);
}
最佳方式
在 catch 中进行类型检查
try {
const accounts = await web3.eth.getAccounts();
callback(null, accounts[0]);
} catch (error) {
if (error instanceof Error ) {
callback(error, null);
} else {
// handle
}
}