如何使用typescript键入Vue.component?
我有一个util函数,可以重置某些Vue组件的所有数据内容如何使用typescript键入Vue.component?,typescript,vue.js,vue-component,Typescript,Vue.js,Vue Component,我有一个util函数,可以重置某些Vue组件的所有数据内容 export function resetData(vm: any) { Object.assign(vm.$data, vm.$options.data.call(vm)); } 我正在尝试删除Vue.component的“any”类型,这可能吗?是否有任何接口以Vue中的$数据为目标 我需要得到这种类型: 请注意,resetData功能需要一个Vue实例参数 在这种情况下,从“Vue”包导入Vue,并将其用作类型 import
export function resetData(vm: any) {
Object.assign(vm.$data, vm.$options.data.call(vm));
}
我正在尝试删除Vue.component的“any”类型,这可能吗?是否有任何接口以Vue中的$数据为目标
我需要得到这种类型:
请注意,
resetData
功能需要一个Vue实例参数
在这种情况下,从“Vue”
包导入Vue
,并将其用作类型
import Vue from "vue";
export function resetData(vm: Vue) { ... }
Vue对象具有预期的$data
和$options
参数
剩下的问题是要知道对象$options.data
包含什么。一旦数据
是未知类型,但我们将其用作函数,换句话说:()=>void
。否则会引发语法错误
Object.assign(vm.$data, (vm.$options.data as ()=>void).call(vm));
没有编译错误的最终代码如下
import Vue from "vue";
export function resetData(vm: Vue) {
Object.assign(vm.$data, (vm.$options.data as ()=>void).call(vm));
}
代码变得有点冗长,但现在它自己的键入非常紧凑