typescript - Vue JS 打字稿项目。试图减少每个组件中的模型导入,但 Vetur 抱怨
问题描述
问题
我在整个项目中有很多重用的导入,我想将其最小化以获得更简洁的代码。我在我的项目中使用类模型,并将它们导入几乎每个组件中。
到目前为止已完成故障排除
我开始使用单个文件进行测试。我在我的 main.ts 文件中导入了模型,并且在功能上它工作正常,但 Vetur 在我的 vscode 终端中抛出错误。那是怎么回事?如何消除这些错误?
301:19 Cannot find name 'ModelA'.
这是我必须在 Vetur 上查看的东西,它是这里的设置吗?
Main.ts
import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import './registerServiceWorker';
import ModelA from '@/models/ModelA'
Vue.config.productionTip = false;
Vue.config.devtools = true
new Vue({
router,
store,
vuetify,
render: (h) => h(App),
}).$mount('#app');
零件
<template>
<div>
<router-view></router-view>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
name: 'Action Page',
methods: {
doSomething(): ModelA {
//some work
return objectThatMatchesModelA
}
}
});
</script>
<style lang="stylus" scoped></style>
就像我说的那样,从功能上讲,这一切都正常工作,我可以从组件中删除导入,但问题是终端中的 vetur 错误。
ERROR 343:22 Cannot find name 'ModelA'.
我有一个垫片文件,它看起来像这样
shim-vue.d.ts
declare module '*.vue' {
import Vue from 'vue'
export default Vue
}
tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": [
"webpack-env",
"jest"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
],
"files": [
"./src/shims-tsx.d.ts"
]
}
解决方案
declare module '*.vue' {
import Vue from 'vue'
export default Vue
}
参考资料:https ://github.com/vuejs/vue/issues/5298#issuecomment-453036640
推荐阅读
- javascript - 反序列化 Tekla Structures *.lis 文件
- swift - 如何根据文本字段的大小调整字体大小?
- android - androidx AppBarLayout AppBar上边距问题
- javascript - 响应元素高度应该等于宽度
- python - 如何修复多个注释总和给出错误答案
- list - 如何在 Selenium WebDriver 中验证 Web 表中列值的顺序?
- python-3.x - 聚合 Pandas DataFrame 中重复行的列表项
- node.js - 如何记录节点应用程序的操作顺序?
- c++ - AES128 和 AES256 在密钥扩展和字节生成方面有什么区别?(也许是 AES192)
- java - 使用流将一组字符串划分为大小为 x 的子集