У меня есть следующий код для создания и перехвата пользовательского исключения:
class CreateValidationError extends Error {
constructor(message?: string) {
super(message);
Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain
this.name = CreateValidationError.name; // stack traces display correctly now
}
}
function doSomething() {
throw new CreateValidationError('abc')
}
function funcOne() {
try {
doSomething()
}
catch(e) {
if (e instanceof Error) { console.log('its an error') }// this prints correctly
if (e instanceof CreateValidationError) { console.log('its a CreateValidation error') } // this does not print
}
}
Проблема в том, что instanceof
обнаруживает только базовый класс, а не производный класс.
Am Я делаю что-то не так в определении пользовательского исключения?
Или есть какие-то известные ошибки, связанные с TypeScript или Webpack, которые могут привести к потере иерархии классов во время сборки?