是不是所有组件都要导入vue? Nuxt 和打字稿
is it necessary to import vue in all components? Nuxt and typescript
目前我已经将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;
}
在nuxt添加typescript之前,我的组件是这样的:
<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
。
如 docs 所述,Vue.extend
只需要在您的 TypeScript IDE 中启用类型推断。例如,它让 TypeScript 根据 data()
.
中 params
的声明推断出 mounted()
中 this.params
的类型
Vue.extend
不添加任何功能,因此无论是否使用 Vue.extend
,您的组件都会 运行 相同。但是,要获得使用 TypeScript 的全部好处,您应该在您的组件中使用Vue.extend
。
目前我已经将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;
}
在nuxt添加typescript之前,我的组件是这样的:
<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
。
如 docs 所述,Vue.extend
只需要在您的 TypeScript IDE 中启用类型推断。例如,它让 TypeScript 根据 data()
.
params
的声明推断出 mounted()
中 this.params
的类型
Vue.extend
不添加任何功能,因此无论是否使用 Vue.extend
,您的组件都会 运行 相同。但是,要获得使用 TypeScript 的全部好处,您应该在您的组件中使用Vue.extend
。