我有一个Vue组件,该组件具有使用装饰器定义的属性:
import { Component, Vue } from "vue-property-decorator"
@Component({
props: {
myId: String,
},
})
class TestProp extends Vue {
myFunction(obj: any) {
return obj[this.myId] // here tslint complains: "Property 'myId' does not exist on type 'TestProp'."
}
}
我可以通过将this
转换为any
来避免类型错误:
myFunction(obj: any) {
return obj[(this as any).myId]
}
但这只是解决方法,而不是解决方案。
我猜编译器是否不知道@Component
装饰器定义的属性?
有什么想法吗?
答案 0 :(得分:2)
我建议您使用以下库:https://github.com/kaorun343/vue-property-decorator
使用此方法,可以在组件类中声明prop。
例如:
import { Vue, Component, Prop } from 'vue-property-decorator'
@Component
class TestProp extends Vue {
@Prop(String) myId: string!
}
答案 1 :(得分:1)
TypeScript example指出您必须自己在组件中对其进行记录。
从该页面
// additional declaration is needed
// when you declare some properties in `Component` decorator
import { Component, Vue } from "vue-property-decorator"
@Component({
props: {
myId: String,
},
})
class TestProp extends Vue {
myId: string;
myFunction(obj: any) {
return obj[this.myId] // here tslint complains: "Property 'myId' does not exist on type 'TestProp'."
}
}