DOOFOX BLOG

8月 20 2018 Category:

在 Vue 项目中使用 TypeScript 时,声明方法或变量

在使用 TypeScript 编写 Vue 时,可能会遇到一些问题,例如 [ts] 类型“Vue”上不存在属性“xxx”
针对这些问题,你可能需要先对这些方法或变量进行声明。

常见报错

import Vue from 'vue'export
default Vue.extend({
	name:'demo',
	render(h) {
		return h('div', 
		{
			class: 'page-footer-tabs',
			attrs: {
				options: this.options // [ts] 类型“ComponentOptions, DefaultMethods, DefaultComputed, PropsDefinition>, Record>”上不存在属性“options”。
			},
			on: {
				click: (el) => this.onSwitch(el) // [ts] 类型“Vue”上不存在属性“onSwtich”。
			}
		},
		'hello world')
	},
	methods: {
		onSwtich(el) {}
	}
})

对其进行声明

在文件头部添加相关申明即可。针对共有的方法,可以申明在 vue-shim.d.ts

// 针对方法进行声明
declare module 'vue/types/vue' {
	interface Vue {
		onSwtich(el: Element): void
	}
}

// 针对 data 参数进行申明
declare module 'vue/types/options' {
	interface ComponentOptions {
		options?: object
	}
}