Исследование вычисляемых свойств в Vue.js с помощью TypeScript

Вычисляемые свойства в Vue.js позволяют определять динамические свойства на основе состояния других свойств в экземпляре Vue. Используя TypeScript с Vue, мы можем использовать возможности статической типизации, чтобы улучшить процесс разработки и выявить потенциальные ошибки на ранних этапах. В этой статье мы рассмотрим различные методы использования вычисляемых свойств в Vue.js с TypeScript, а также приведем примеры кода.

Метод 1: базовое вычисляемое свойство

<template>
  <div>
    <p>The sum of {{ number1 }} and {{ number2 }} is {{ sum }}</p>
  </div>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class MyComponent extends Vue {
  number1: number = 5;
  number2: number = 10;
  get sum(): number {
    return this.number1 + this.number2;
  }
}
</script>

В этом примере у нас есть два числа, number1и number2, а также вычисляемое свойство sum, которое вычисляет сумму этих двух чисел.. Доступ к свойству sumв шаблоне осуществляется с помощью интерполяции.

Метод 2: вычисляемый сеттер

<template>
  <div>
    <input v-model="fullName" placeholder="Enter your full name" />
    <p>Your first name is {{ firstName }}</p>
    <p>Your last name is {{ lastName }}</p>
  </div>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component
export default class MyComponent extends Vue {
  fullName: string = '';
  get firstName(): string {
    return this.fullName.split(' ')[0];
  }
  set firstName(value: string) {
    const lastName = this.fullName.split(' ')[1] || '';
    this.fullName = `${value} ${lastName}`;
  }
  get lastName(): string {
    return this.fullName.split(' ')[1] || '';
  }
  set lastName(value: string) {
    const firstName = this.fullName.split(' ')[0];
    this.fullName = `${firstName} ${value}`;
  }
}
</script>

В этом примере у нас есть поле ввода, привязанное к свойству fullNameс помощью v-model. Мы определяем вычисляемые свойства firstNameи lastNameдля извлечения имени и фамилии из строки fullName. Мы также определяем методы установки для firstNameи lastNameдля обновления свойства fullNameпри изменении соответствующих вычисляемых свойств.

Метод 3: вычисляемое свойство с помощью Watcher

<template>
  <div>
    <input v-model="quantity" type="number" />
    <p>Total price: {{ totalPrice }}</p>
  </div>
</template>
<script lang="ts">
import { Vue, Component, Watch } from 'vue-property-decorator';
@Component
export default class MyComponent extends Vue {
  quantity: number = 1;
  price: number = 10;
  totalPrice: number = this.quantity * this.price;
  @Watch('quantity')
  onQuantityChange(newQuantity: number, oldQuantity: number) {
    this.totalPrice = newQuantity * this.price;
  }
}
</script>

В этом примере у нас есть поле ввода, привязанное к свойству quantity, и вычисляемое свойство totalPrice, которое вычисляет общую цену на основе количества и цены. Мы используем наблюдатель для обновления totalPriceпри каждом изменении quantity.

Вычисляемые свойства в Vue.js с помощью TypeScript предоставляют мощный механизм для получения динамических свойств на основе других свойств в экземпляре Vue. Мы исследовали различные методы использования вычисляемых свойств, включая базовые вычисляемые свойства, вычисляемые методы установки и вычисляемые свойства с наблюдателями. Используя статическую типизацию TypeScript, мы можем улучшить рабочий процесс разработки и выявить потенциальные ошибки на ранних этапах.