javascript - Vue.js TypeScript-Schnittstelle funktioniert nicht
Weiß jemand, wie die Syntax ist, um einen Typ für Daten-Eigenschaften in vue.js zu erstellen (die Anwendung wird in TypeScript geschrieben)? Ich suche nach so etwas wie:
@Component({
data() {
return {
sections: Array<SomeInterface> = []
}
}
})
Aber Vue sieht einen Typ als Wert und ich bin verwirrt, wie ich damit umgehen soll.
Antwort #1
Sie können : nicht wie gewohnt verwenden, um den Typ voranzustellen, da die Syntax mit der key: value-Objektsyntax von JavaScript in Konflikt steht. Sie können stattdessen einfach die Typinferenz verwenden, indem Sie das leere Array [] auf den Typ SomeInterface[] erzwingen:
@Component({
data() {
return {
sections: [] as SomeInterface[]
}
}
})
Antwort #2
Sie sollten Klassenstil-Komponenten mit vue-class-component verwenden, die es Ihnen ermöglichen, diese Deklarationen zu Klassen-Eigenschaften zu verschieben und gut mit Typescript zusammenarbeiten.
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
template: '<button @click="onClick">Click!</button>'
})
export default class MyComponent extends Vue {
// Initial data can be declared as instance properties
message: string = 'Hello!'
// Component methods can be declared as instance methods
onClick (): void {
window.alert(this.message)
}
}
