Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用typescript键入Vue.component?_Typescript_Vue.js_Vue Component - Fatal编程技术网

如何使用typescript键入Vue.component?

如何使用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

我有一个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 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));
}
代码变得有点冗长,但现在它自己的键入非常紧凑