2017-04-13 2 views
1

Vue.js wird mit offiziellen TypeScript-Typdefinitionen geliefert, die zusammen mit NPM in der Bibliothek installiert werden.Typ, der eine einfache Vue.js App mit TypeScript überprüft

Ich versuche, sie zu verwenden, um eine einfache App zu überprüfen. Alle Proben ich gefunden habe, die Verwendung von Typoskript in Komponenten zeigen, aber ich konnte nicht einen Weg zu geben überprüft eine einfache App wie finden:

import * as Vue from 'vue'; 

interface Item { 
    name: string; 
} 

var app = new Vue({ 
    el: '#app', 
    data: { 
    items: <Item[]> [] 
    }, 
    methods: { 
    addItem: function() { 
     this.items.push({ name: 'Item' }); 
    } 
    } 
}); 

Ich denke, dass die größte Herausforderung ist, dass alle Daten, Methoden, berechnete Eigenschaften usw. sollten alle unter this verfügbar sein. In diesem Fall ist this jedoch vom Typ Vue und enthält keine items Eigenschaft.

Gibt es eine Möglichkeit, dies zu entfernen?

Antwort

2

Etwas Ähnliches könnte helfen, ich bin nicht allzu vertraut mit VueJS aber versuchen, diese

import * as Vue from 'vue'; 

interface Item { 
    name: string; 
} 

interface App extends Vue { 
    items: Item[]; 
} 

export default { 
    el: '#app', 
    data: { 
    items: <Item[]> [] 
    }, 
    methods: { 
    addItem: function() { 
     this.items.push({ name: 'Item' }); 
    } 
    } 
} as ComponentOptions<App> 

Die Alternative einer Peer Abhängigkeit

import Vue from 'vue' 
import Component from 'vue-class-component' 
// The @Component decorator indicates the class is a Vue component 
@Component({ 
    // All component options are allowed in here 
    el: '#app' //... rest of your options 
}) 
export default class Item extends Vue { 
    // Initial data can be declared as instance properties 
    items: <Item[]> [] 
    // Component methods can be declared as instance methods 
    addItem(): void { 
    this.items.push({name: 'Item' }); 
    } 
} 
+0

Dank verwendet! Ich musste das erste Beispiel anpassen, damit es funktioniert (siehe meine Bearbeitung). Die zweite funktionierte jedoch nicht für mich. Ich habe kein 'vue-class-component' Modul zum importieren, und wenn ich 'import Component from 'vue' versuche, beschwert sich der Compiler, dass Component nicht aufrufbar ist. –

+0

Ja, für das zweite Beispiel müsste man es npm installieren. Das erste Beispiel weist einige Mängel auf. – Byrd