【发布时间】:2018-06-02 17:03:48
【问题描述】:
我在网上搜索了一个 Vue.js + TypeScript 设置的最小工作示例。按照“现代 JavaScript 堆栈”的惯例,这些教程中的大多数要么是过时的,尽管是在几个月前编写的,要么取决于非常具体的设置。似乎没有通用的、可验证的示例可供构建。
以下是我考虑的一些资源:
- https://vuejs.org/v2/guide/typescript.html
- https://herringtondarkholme.github.io/2016/10/03/vue2-ts2/
- http://www.mindissoftware.com/Vue-Sample-in-Typescript/
- https://medium.com/@hayavuk/setting-vue-up-for-typescript-goodness-a6ddc4072f4f
- https://johnpapa.net/vue-typescript/
- https://alexjoverm.github.io/2017/06/28/Integrate-TypeScript-in-your-Vue-project/
我使用的基本模板是通过运行vue-cli init webpack 和所有默认选项提供的。由于这会产生大量代码,因此我不会在此处粘贴所有内容。如果需要一些具体的摘录,我很乐意更新问题。
官方的 Vue.js 文档对我来说毫无用处,因为它没有考虑使用 SFC 设置 TypeScript。我尝试的最新的是列表中的最后一个。我严格按照设置进行操作,但在npm run dev 上出现以下错误:
[tsl] ERROR in /Users/[REDACTED]/ts-test/src/main.ts(12,3)
TS2345: Argument of type '{ el: string; router: any; template: string; components: { App: { name: string; }; }; }' is not assignable to parameter of type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Rec...'.
Object literal may only specify known properties, and 'router' does not exist in type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Rec...'.
谁能阐明为什么会发生这种情况以及如何解决它?更好的是,我非常欢迎一个简洁、最小的分步示例,说明如何使用 webpack 模板设置工作的 Vue.js + TypeScript 配置。
我已经成功完成了几个在 Vue.js 中使用 vanilla JavaScript 在生产环境中运行的客户端项目,但是这个 TypeScript 工具与 Vue.js 的结合让我很困惑。
【问题讨论】:
-
你好,这是一个带有打字稿的模板,希望对您有所帮助github.com/morganster/vue-ts-webpack-template
-
现在很不幸,因为它没有处理 Vue 路由器部分。
-
就目前而言,所有示例要么臃肿复杂,要么没有考虑 vue-router/vuex。我即将对这种设置失去耐心。我可能会完全放弃它并像往常一样继续。
-
你好,我只是用 vue-router 部分更新模板,检查它是否有帮助。
标签: javascript typescript webpack vue.js