So wenden Sie TypeScript-Klassen in Vue-Projekten an

So wenden Sie TypeScript-Klassen in Vue-Projekten an

1. Einleitung

TypeScript basiert auf der Bibliothek vue-class-component , einer offiziellen von Vue gestarteten Bibliothek, die die Verwendung von class zur Entwicklung vue -Einzeldateikomponenten unterstützt.

Die Hauptfunktionen sind wie folgt:

  • methods können direkt als Membermethoden einer Klasse deklariert werden
  • Berechnete Eigenschaften können als Eigenschaftszugriffsmethoden einer Klasse deklariert werden.
  • Initialisierte data können als Klassenattribute deklariert werden
  • data , render und alle Vue-Lifecycle-Hooks können direkt als Klassenmitgliedsmethoden verwendet werden.
  • Alle anderen Eigenschaften müssen im Dekorator platziert werden

2. Verwendung

vue-property-decorator stellt hauptsächlich die folgenden Dekoratoren bereit

  • @Stütze
  • @PropSync
  • @Modell
  • @Betrachten
  • @Bieten
  • @Injizieren
  • @ProvideReactive
  • @InjectReactive
  • @Emittieren
  • @Referenz
  • @Component (bereitgestellt von vue-class-component)
  • Mixins (bereitgestellt von Vue-Class-Component)

1. @Komponente

Component Es kennzeichnet diese Klasse als Vue-Komponente, sodass sie nicht weggelassen werden kann, auch wenn keine Optionen festgelegt sind

Wenn Sie name , components , filters , directives und benutzerdefinierte Eigenschaften definieren müssen, können Sie diese im Component Dekorator wie folgt definieren:

importiere {Component,Vue} aus „vue-property-decorator“; 
importiere {KomponenteA,KomponenteB} aus '@/Komponenten'; 
 
 @Komponente({ 
    Komponenten: { 
        KomponenteA, 
        Komponente B, 
    }, 
    Anweisungen: { 
        Fokus: 
            // Definition der Anweisung eingefügt: function (el) { 
                el.fokus() 
            } 
        } 
    } 
}) 
exportiere Standardklasse YourComponent erweitert Vue{ 
    
} 


2. Berechnet, Daten, Methoden

Dabei entfallen data und methods der Komponente. Bisher mussten die Attribute im Datenrückgabeobjekt und die Methoden in methods direkt in der Klasse als Attribute und Methoden der Klasse definiert werden.

@Komponente 
exportiere Standardklasse HelloDecorator erweitert Vue { 
    count: number = 123 // Das Klassenattribut entspricht den vorherigen Daten 
 
    add(): number { // Die Klassenmethode ist die gleiche wie die vorherige Methode this.count + 1 
    } 
 
    // Das berechnete Attribut abrufen get total(): number { 
      gib dies zurück.Anzahl + 1 
    } 
 
    // Die berechneten Eigenschaften festlegen set total(param:number): void { 
      this.count = Parameter 
    } 
} 

3. @Requisiten

Die Komponente erhält den Dekorator des Attributs, der wie folgt verwendet wird:

importiere {Component,Vue,Prop} vom Vue-Eigenschaftsdekorator; 
 
@Komponente 
exportiere Standardklasse YourComponent erweitert Vue { 
    @Prop(Zeichenfolge) 
    propA: Zeichenfolge; 
     
    @Prop([Zeichenfolge,Zahl]) 
    propB:Zeichenfolge|Zahl; 
     
    @Stütze({ 
     Typ: String, // Typ: [String, Zahl] 
     Standard: „Standardwert“, // normalerweise eine Zeichenfolge oder Zahl 
      //Wenn es ein Objekt oder ein Array ist. Der Standardwert wird von einer Factory-Funktion zurückgegeben // default: () => { 
      // returniere ['a','b'] 
      // } 
     erforderlich: wahr, 
     validator: (Wert) => { 
        zurückkehren [ 
          'In Bearbeitung', 
          "Erledigt" 
        ].indexOf(Wert) !== -1 
     } 
    }) 
    propC: Zeichenfolge; 
} 


4. @watch

Es handelt sich eigentlich um den Listener in Vue, und zwar wie folgt:

importiere { Vue, Komponente, Watch } von 'vue-property-decorator' 
 
@Komponente 
exportiere Standardklasse YourComponent erweitert Vue { 
  @Watch('Kind') 
  beiKindGeändert(Wert: Zeichenfolge, alterWert: Zeichenfolge) {} 
 
  @Watch('Person', { unmittelbar: wahr, tief: wahr }) 
  beiPersonGeändert1(Wert: Person, alterWert: Person) {} 
 
  @Watch('Person') 
  beiPersonGeändert2(Wert: Person, alterWert: Person) {} 
} 


5. @emit

Der von vue-property-decorator bereitgestellte @Emit -Dekorator ersetzt $emit Trigger von Ereignissen in Vue wie folgt:

importiere {Vue, Komponente, Emit} von „vue-property-decorator“; 
    @Komponente({}) 
    exportiere Standardklasse Einige erweitert Vue{ 
        montiert(){ 
            dies.$on('emit-todo', Funktion(n) { 
                console.log(n) 
            }) 
            dies.emitTodo('Welt'); 
        } 
        @Emittieren() 
        emitTodo(n: Zeichenfolge){ 
            console.log('hallo'); 
        } 
    } 

Abschluss

Sie können sehen, dass sich die Syntax der obigen typescript Version der vue class stark von der der üblichen javascript Version unterscheidet. Klassen und Dekoratoren werden an vielen Stellen verwendet, aber tatsächlich ist das Wesentliche dasselbe. Nur durch ständiges Schreiben können Sie darin kompetent werden.

Dies ist das Ende dieses Artikels zur Anwendung TypeScript in Vue-Projekten. Weitere Informationen zur Anwendung von TypeScript in Vue -Projekten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • TypeScript-Aufzählungstyp
  • Einführung in die grundlegenden TypeScript-Typen
  • TypeScript-Aufzählungstypen im Detail erklären
  • Detaillierte Erklärung des Typschutzes in TypeScript
  • Eine kurze Diskussion über den Typschutzmechanismus von TypeScript
  • Klassen in TypeScript

<<:  Verwendung des Linux-Befehls passwd

>>:  Detaillierte Analyse der MySQL Master-Slave-Replikation

Artikel empfehlen

Verwendung des Linux-Befehls „userdel“

1. Befehlseinführung Der Befehl userdel (User Del...

CentOS verwendet expect, um Skripte und Befehle remote in Stapeln auszuführen

Manchmal müssen wir Server stapelweise bedienen, ...

Vue implementiert die Anmeldung per Mobiltelefon-Bestätigungscode

In diesem Artikel wird der spezifische Code von V...

Lösung für den ONLY_FULL_GROUP_BY-Fehler in Mysql5.7 und höher

Während des jüngsten Entwicklungsprozesses handel...

NULL und leere Zeichenfolge in MySQL

Ich bin vor kurzem mit MySQL in Berührung gekomme...

JavaScript Canvas zeichnet dynamische Drahtgittereffekte

In diesem Artikel wird der spezifische Code des d...

Select unterstützt kein Doppelklick-DBClick-Ereignis

XML/HTML-CodeInhalt in die Zwischenablage kopiere...

Beispielanalyse des Prinzips der MySQL-Transaktionsisolationsebene

Einführung Dies ist Ihnen sicherlich schon einmal...