#typescript #vue.js #vuejs3
Вопрос:
Я пытаюсь создать новый проект с помощью Vue 3 и машинописного текста. Для этого я хочу использовать vue-свойство-декоратор, потому что мне нравится синтаксис класса с декораторами.
Я использовал интерфейс командной строки Vue для создания нового проекта Vue 3 TypeScript.
Теперь, если я попытаюсь добавить импорт vue-свойств-декоратора в компонент Vue, я получу ошибку «Супер-выражение должно быть либо нулевым, либо функцией» в консоли браузера. Мой компонент выглядит так:
<template>
<div>Hi</div>
</template>
<script lang="ts">
import { Vue, Prop } from "vue-property-decorator";
export default class App extends Vue {
@Prop(Number) readonly propA: number | undefined;
@Prop({ default: "default value" }) readonly propB!: string;
@Prop([String, Boolean]) readonly propC: string | boolean | undefined;
}
</script>
Сценарий-это всего лишь первый пример из документации модуля, скопированной в мое приложение.vue. Тогда мой main.ts выглядит так:
import { createApp } from "vue";
import App from "./App.vue";
createApp(App).mount("#app");
Я не понимаю, откуда в этом маленьком фрагменте кода могла взяться моя ошибка. Никакие другие компоненты, маршрутизатор или что-либо подобное нигде не импортируются.
Ответ №1:
Решает ли @Component
вашу проблему добавление выше части «экспорт класса по умолчанию»?
import { Vue, Prop, Component } from "vue-property-decorator";
@Component
export default class App extends Vue {
РЕДАКТИРОВАТЬ: Ах, из того, что я вижу, vue-property-декоратор пока официально не поддерживает Vue 3. Однако есть версия-кандидат на выпуск (версия 10), которая его поддерживает.
https://github.com/kaorun343/vue-property-decorator/blob/next/CHANGELOG.md
Комментарии:
1. Я видел этого кандидата на выпуск раньше, но не знал
npm install vue-property-decorator
, что установил версию, совместимую с vue2. Я должен был явно использоватьnpm install vue-property-decorator@10.0.0-rc.2
. Так что это на мне за то, что я неправильно понял установку npm…2. Это потому, что при написании
npm install vue-property-decorator
npm будет установлена версия сlatest
тегом. Напишитеnpm show vue-property-decorator
, чтобы узнать, какая версия последнего тега. Вы могли бы также написатьnpm install vue-property-decorator@rc
, чтобы установить v10