typescript - 是否有必要在所有组件中导入 vue?Nuxt 和打字稿
问题描述
目前我已将 typescript 集成到 nuxt,如文档中所示:https ://typescript.nuxtjs.org/es/guide/setup/
但我有以下疑问:在组件中你应该始终import vue from "vue"
和export default Vue.extend ({});
在文档中我看到他们使用 1 个组件(https://typescript.nuxtjs.org/es/cookbook/components)执行示例,但在我的情况下,我怀疑我是否真的应该将它们添加到所有组件中,或者我可以以何种方式在全局范围内执行此操作。
我以为我types/vue-shim.d.ts
文件中的配置为我做了这个,但后来我的概念错了。
vue-shim.d.ts
:
import Vue from "vue";
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}
在将 typescript 添加到 nuxt 之前,我的组件是这样的:
<script>
import comp from "../component.vue";
export default {
components: {
comp
},
data() {
return {
createUser: true,
params: {
rol_id: 0,
post_url: "",
update_url: ""
}
};
},
mounted() {
this.params.post_url = this.$config.routePrefix + "/agency/";
this.params.update_url = this.$config.routePrefix + "/agency/";
if (this.$route.params.uuid !== undefined) {
this.createUser = false;
}
},
methods: {
fetchForms() {}
}
};
</script>
解决方案
不,并非绝对需要导入vue
所有组件。
如文档中所述,Vue.extend
仅需要在您的 TypeScript IDE 中启用类型推断。例如,它让 TypeScript 根据 in 的声明推断in的this.params
类型。mounted()
params
data()
Vue.extend
不添加任何功能,因此无论有没有Vue.extend
. 但是,要获得使用 TypeScript 的全部好处,您应该在组件中使用Vue.extend
。
推荐阅读
- c# - DocuSign 信封“已发送”状态与 Web 应用程序的“交付失败”状态不匹配
- google-sheets - 将工作表复制到另一个文档以替换现有文档
- xamarin - 使用没有外部存储权限的 ExoPlayer
- php - mysqli_query 无法读取用户表
- eclipse-rcp - Eclipse Forms - 用户输入的可编辑标题
- encryption - 邮件服务器的散列密码以登录
- java - 如何从字符串传递 setColor 参数
- excel - 在活动用户窗体上执行功能并将功能值显示为标题
- azure-cognitive-search - 即使在 200 OK 响应之后,Azure 搜索索引上的 mergeOrUpload 操作是否需要一些重新索引时间?
- postgresql - PostgreSQL 的 `initdb` 因“无效的区域设置;检查 LANG 和 LC_* 环境变量”而失败