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

Einführung in Fork in Multithreading unter Linux

Inhaltsverzeichnis Frage: Fall (1) Fork vor dem E...

HTML-Meta erklärt

Einführung Der Meta-Tag ist ein Hilfstag im HEAD-...

Spezifische Verwendung des Stapelkontexts in CSS

Vorwort Unter dem Einfluss einiger CSS-Interaktio...

Lösung zum Vergessen des Passworts des Pagodenpanels in Linux 3.X/4.x/5.x

Geben Sie ssh ein und geben Sie den folgenden Bef...

Einige Tipps zur Beschleunigung der Entwicklung von WeChat-Miniprogrammen

1. Erstellen Sie eine Seite mit app.json Gemäß un...

Beispielcode zur Implementierung der Ellipsenbahnrotation mit CSS3

In letzter Zeit müssen folgende Effekte erzielt w...

Tiefgreifendes Verständnis des Linux-Lastausgleichs LVS

Inhaltsverzeichnis 1. LVS-Lastausgleich 2. Grundl...

Lösung für Indexfehler in MySQL aufgrund unterschiedlicher Feldzeichensätze

Was ist ein Index? Warum einen Index erstellen? I...