Skip to content

Vue中使用TS

可以通过类的方式来定义组件

借助官方的库文件

官方网址:https://class-component.vuejs.org/

基本的使用

父组件:Home

vue

<template>
  <div>
    <h1 @click="myFun">{{title}}</h1>
    <h2>{{msg}}</h2>
    <son parentdata="sss" @parentFn="sonFn"></son>
  </div>
</template>

<script lang="ts">
import { Vue,Component,Watch } from 'vue-property-decorator';
import Son from '../components/Son'
@Component({
  // 如果在类中找不到需要添加的内容,那么就可以写在这里
  components:{
    Son
  }
})
export default class Home extends Vue {
  // 相当于data中的属性
  title:string = "你好"
  // 定义一个方法
  // 如果是通过类的方式来定义组件,那么类中的方法就是过去的methods
  myFun(){
    alert("test")
  }

  sonFn(data:any){
    alert(data)
  }

  // 计算属性
  // 如果是通过类的方式来定义组件,那么类中的get方法就是过去的computed方法
  get msg(){
    return "ssss";
  }

  // 属性观察watch
  // 第一个参数是需要观察的属性名称,
  // 第二个是一个配置deep:true,是否开始深度监听
  @Watch("message",{deep:true})
  $message(newValue:string,oldValue:string){
    console.log(newValue, oldValue);
  }
}
</script>


子组件:Son

vue
<template>
  <div>
    {{message}}

    {{parentdata}}
    <button @click="sonFn">你好</button>
  </div>
</template>

<script>
import { Vue,Component,Prop,Emit } from 'vue-property-decorator';
@Component
export default class Son extends Vue{
  message = "我是子组件"

  @Prop(String) parentdata;

  @Emit('parentFn')
  sonFn(){
    return "Ssss";
  }
}
</script>

<style scoped>

</style>


Released under the MIT License.