тип сценария : тип ошибки при закрытии catch

#typescript #vue.js #nuxt.js

Вопрос:

Я использую машинопись с VueJS

У меня здесь ошибка ввода

Я сделал type assertation так, как ты видишь

но ошибки продолжаются

 catch (err) {    const msg = (err as TypeError)?.response?.statusText }  

что мне делать ?

Комментарии:

1. Разве так не должно быть catch (err: TypeError) ?

2. @bassxzero typescript этого не поддерживает. Ошибка в блоке catch может быть только unknown или any .

3. @bassxzero , тогда у нас будет ошибка типа в ответе на : err.response

Ответ №1:

Чтобы решить вашу проблему, вы можете проверить err , действительно ли это TypeError похоже:

 catch (err) {   if (err instanceof TypeError) {    const msg = err.response?.statusText   }   }  

Дополнительная информация: err это может быть действительно все, что угодно, так как вы можете использовать в javascript все, что вам нравится (чего вам, вероятно, следует избегать).:

 function foo() {  try {  throw 'this is not an error'; // don't do that!  } catch (err) {   if (err instanceof Error) {  console.error('error', err);  } else {  console.log('log', err);  }  } }  foo(); // log this is not an error