vue/types/test/augmentation-test.ts

54 lines
840 B
TypeScript

import Vue, { defineComponent } from '../index'
declare module '../vue' {
// add instance property and method
interface Vue {
$instanceProperty: string
$instanceMethod(): void
}
// add static property and method
interface VueConstructor {
staticProperty: string
staticMethod(): void
}
}
// augment ComponentOptions
declare module '../options' {
interface ComponentOptions<V extends Vue> {
foo?: string
}
}
const vm = new Vue({
props: ['bar'],
data: {
a: true
},
foo: 'foo',
methods: {
foo() {
this.a = false
}
},
computed: {
BAR(): string {
return this.bar.toUpperCase()
}
}
})
vm.$instanceProperty
vm.$instanceMethod()
Vue.staticProperty
Vue.staticMethod()
defineComponent({
mounted() {
this.$instanceMethod
this.$instanceProperty
}
})