参考資料
【速習】vue-property-decorator - Qiita
vue.js + typescript = vue.ts ことはじめ - Qiita
vue-property-decoratorを使うにはvue-class-componentが使える状態にしておく必要がある
Vueのコンポーネントをクラススタイルの構文で作成できるライブラリ
@Componentデコレータ
でクラスにアノテーション(@
)を付けることで、Vueを継承したクラスとしてコンポーネントのデータやメソッドを定義することができる
基本構文
<template>
<div class="home">
<MyButton></MyButton>
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import MyButton from "@/components/MyButton.vue";
@Component({
components: {
MyButton,
},
})
export default class HomeView extends Vue {}
</script>
@Prop
は続けて定義したメンバーをprops
として使用できるようになる
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator';
@Component
export default class SampleComponent extends Vue {
@Prop({ type: String, required: true })
userName: string;
@Prop({ type: Boolean, defualt: false })
isVisible: boolean;
}
</script>
Dataはクラスのメンバーとして定義するだけで利用できる
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
@Component
export default class SampleComponent extends Vue {
name = 'simochee';
age: number | null = 21;
}
</script>
算出プロパティ(Computed)はクラスのGetterとして定義することで利用できる
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
@Component
export default class SampleComponent extends Vue {
score = 55;
get triple() {
return this.score * 3;
}
}
</script>
メソッドはクラスのメソッドとして定義するだけで利用できる