我的组件中有一个标准componentDidCatch
,其类型如下所示,并从内部调用外部 Logging 库:
componentDidCatch(error: Error, info: React.ErrorInfo) {
Logger.logErrorMessage(error.message, info);
}
然而,第 3 方日志库logErrorMessage
函数的类型如下:
type ArbitraryValue = undefined | string | number | boolean | ArbitraryObject;
interface ArbitraryObject {
[p: string]: ArbitraryValue;
}
...
logErrorMessage(message: string, info: ArbitraryObject): void;
TS 错误消息显示如下
.../ErrorBoundary.tsx:38:82 - error TS2345: Argument of type 'ErrorInfo' is not assignable to parameter of type 'ArbitraryObject'.
Index signature is missing in type 'ErrorInfo'.
38 Logger.logErrorMessage(error, info);
~~~~
让我info
的 componentDidCatch 参数遵守 logErrorMessage 的 ArbitraryObject 接口的最佳方法是什么?最好无需更改 Logger 库源。