typescript - 如何使用打字稿键入 Vue.component?
问题描述
我有一个 util 函数可以重置某些 Vue 组件的所有数据内容。
export function resetData(vm: any) {
Object.assign(vm.$data, vm.$options.data.call(vm));
}
而且我正在尝试删除我的 Vue.component 的“任何”类型,这可能吗?有没有针对 Vue 的 $data 的接口?
我需要得到这种类型:
解决方案
请注意,该resetData
函数需要一个 Vue Instance 参数
Vue
在这种情况下,从包中导入"vue"
并将其用作类型
import Vue from "vue";
export function resetData(vm: Vue) { ... }
Vue 对象具有$data
和$options
预期的参数。
剩下的问题是要知道对象$options.data
持有什么。Oncedata
是一个未知类型,但我们将其用作函数,换句话说:()=>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));
}
代码变得有点冗长,但现在对自己的输入非常严格
推荐阅读
- javascript - 如何在谷歌脚本中设置和获取日期?
- scala - 在 Scala 中混合逆变和协变类型
- python - 对于 df 中的每一行减去另一个 df
- python - LDA 主题没有变化
- mysql - GCP MySQL Cloud SQL 数据库无法正确导出多字节 UTF-8 字符
- css - 使用粘性位置时保留侧边栏的网格间隙
- sql-server - 如何使用 powershell 在 SQL Azure 中获取所有 Runbook 作业
- jquery - 使用 jquery 播放音频而无需循环
- typescript - mochaOpts 需要量角器配置中的文件
- javascript - 如何通过2个参数进行角度排序