Im trying to extend the Error class with the following ( for monitoring with Sentry in React Native ) but get the following error.
Class 'MonitoringError' incorrectly extends base class 'Error'.
Types of property 'name' are incompatible.
Type 'string | boolean | CaptureContext | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
With the following code
import { CaptureContext } from '@sentry/types';
import { ComponentType } from 'react';
import { FallbackProps } from 'react-error-boundary';
import { eventMonitoring } from './SentryCrashlyticsService';
export class MonitoringError extends Error {
constructor(
public message: string,
public name?: string | CaptureContext | boolean,
public captureContext?: CaptureContext | boolean,
) {
super(message);
}
public capture: () => void = () => {
let skipLogging = false as boolean | undefined;
let ctx = this.captureContext;
let name;
if (this.name && typeof this.name === 'string') {
name = this.name;
} else if (this.name && typeof this.name === 'boolean') {
skipLogging = name;
} else if (name) {
ctx = name as CaptureContext;
}
if (typeof this.captureContext === 'boolean' && !skipLogging) {
skipLogging = true;
}
if (!skipLogging) {
eventMonitoring.captureException(this, ctx as CaptureContext);
}
};
}
Whats the best way to extend, if possible.
CodePudding user response: