Vue 使用TypeScript

本文详细介绍如何在Vue.js项目中使用TypeScript进行静态类型检查,包括数据属性、Props、Vuex状态管理、组件生命周期钩子及计算属性的类型定义。通过实际代码示例,展示TypeScript如何增强代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typescript 提供了类型声明,做静态类型检查,类型就是最好的注释。

<template>
  <div id="demo">
    <input type="text" v-model="msg" />
    <p>msg: {{ msg }}</p>
    <p>computedMsg: {{ computedMsg }}</p>
    <button @click="greet">Greet</button>
    <p>{{ login }}</p>
    <button @click="changeState">change state</button>
  </div>
</template>

<script lang="ts">
  import { Component, Emit, Inject, Model, Prop, Provide, Vue, Watch } from "vue-property-decorator";
  import { State, Getter, Action, Mutation, namespace } from "vuex-class";

  @Component
  export default class Demo extends Vue {
    // data
    public msg: string = "Hello World";
    // props
    @Prop() private name!: string;

    // store
    @namespace("basic").State((state: any) => state.sexMenu) private sexMenu!: any;
    @State("basic") private basic!: any;
    @namespace("basic").Action("getHouseList") private getHouseList!: any;

    @State private login!: boolean;
    @Action private toggleLogin!: any;

    // watch
    @Watch("msg")
    public onMsgChanged(val: string, oldVal: string): string {
      return val;
    }

    // mounted
    public mounted(): void {
      this.greet();
    }

    // computed
    get computedMsg(): string {
      return `computed: ${this.msg}`;
    }

    // methods
    public greet(): void {
      console.log(`greeting: ${this.msg}`);
    }
    public changeState(): void {
      this.toggleLogin();
    }
  }
</script>

<style scoped lang="scss">
  #demo {
    line-height: 24px;
  }
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值