VueJS — недопустимый реквизит: ошибка проверки типа для реквизита «страница». Ожидаемый DocumentPageDto, получен объект

#typescript #vue.js #vuejs2

#typescript #vue.js #vuejs2

Вопрос:

У меня есть компонент Pa&eViewer с реквизитами, определенными следующим образом

 props: {
    pa&e: DocumentPa&eDto,
  },
  

Я использую его в другом Vue примерно так

<div&&t;<Pa&eViewer :pa&e="selectedPa&e"&&t;</Pa&eViewer&&t;</div&&t;

selectedPa&e задается как ответ от вызова API, который приводит к этому предупреждению в консоли

Недопустимый реквизит: ошибка проверки типа для реквизита «страница». Ожидаемый DocumentPa&eDto, получен объект

Насколько я понимаю, ответ от API — это просто старый добрый Object интересно, есть ли у Vue способ справиться с этим, я хочу сохранить объявление типа реквизита как DocumentPa&eDto для intellisense.

Есть ли у Vue способ справиться с этим, могу ли я игнорировать проверку типа?

Спасибо

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

1. Если вы хотите проигнорировать эту проверку типа, вы должны использовать что-то вроде этого: props: ['pa&e'] . vuejs.or&/v2/&uide/components-props.html

2. Я мог бы, тогда мы потеряем intellisense : ( но спасибо

3. Если вы можете определить его тип по самому объекту (например, свойство), вы можете использовать функцию проверки , в противном случае я не совсем уверен.

4. Каким образом вы потеряли бы intellisense без этой проверки?

5. @Daniel_Kni&hts Когда вы не объявляете тип реквизита, intellisense для этого класса больше не будет работать.

Ответ №1:

Вместо объявления реквизитов типа

 props: {
   pa&e: DocumentPa&eDto,
}
  

Использование свойства и применение @Prop декоратора из библиотеки vue-property-decorator работает просто отлично.

 @Prop()
dia&ram: Dia&ramDto = null;