我的代码使用async
库,特别是此回调类型(source):
interface AsyncResultCallback<T> { (err: Error, result: T): void; }
在我的启用了strictNullChecks
的TypeScript代码中,调用它会失败:
cb(null, someObject);
错误:(239,16)TS2345:类型&#39; null&#39;的参数不能分配给&#39;错误&#39;。
类型的参数
现在我不确定库类型定义是否错误,但让我们说它是,并且界面应该用err
可选定义,如下所示:
interface AsyncResultCallback<T> { (err?: Error, result: T): void; }
我可以做些什么来说服TypeScript允许传递null
作为回调的第一个参数?我已经尝试"skipLibCheck": true
和"skipDefaultLibCheck": true
,但没有快乐。
答案 0 :(得分:2)
skipLibCheck
和skipDefaultLibCheck
标志在这种情况下无法提供帮助,因为错误来自您的代码,而不是来自您正在使用的库。
你有两个选择(我能想到):
(1)传递非空值:
cb(new Error(), someObject);
(2)尝试扩充库:
import * as Async from "async";
declare global {
interface AsyncResultCallback<T> {
(err: Error | null, result: T): void;
}
}