如何将TypeScript与Vue.js和单个文件组件一起使用?

her*_*off 15 javascript typescript webpack vue.js

我在网上搜索了一个Vue.js + TypeScript设置的最小工作示例.正如通常的"现代JavaScript堆栈"一样,尽管只是在几个月前编写或依赖于非常具体的设置,但大多数这些教程要么已经过时了.似乎没有一个通用的,可验证的例子可供构建.

以下是我考虑过的一些资源:

我使用的基本模板是通过运行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...'.
Run Code Online (Sandbox Code Playgroud)

任何人都可以阐明为什么会发生这种情况以及如何解决它?更好的是,我非常欢迎有关如何使用webpack模板设置有效的Vue.js + TypeScript配置的简明,最小,一步一步的示例.

我已经成功完成了几个使用vanilla JavaScript在Vue.js中生成的客户端项目,但是这个TypeScript工具与Vue.js结合起来只会让我感到困惑.

sob*_*evn 7

我试过typescriptvue.我的个人意见:它不能很好地运作.由于一些vue内部不适合typescript:

  1. vuexthis.$store.dispatch('some_action')
  2. Vue.use,Vue.mixin而变异全球其他类似的东西Vue实例

但是,同时做我的研究,我发现这些精彩的boilerplates:打字稿-VUE教程由丹尼尔Rosenwasser和打字稿-Vue的起动由微软.

我也试图模仿vue-webpack-templatetypescript由自己:https://github.com/sobolevn/wemake-vue-template

还有很好的工具可以让您的typescript+ vue工作流更好:

最后我决定使用flow.如果您有兴趣,请查看此项目模板.


fim*_*ars 6

更新

在2018年9月,应该vue-cli使用TypeScript插件尝试新的.


绝对同意@ sobolevn的意见.但是,有很多信息供我判断,社区对TypeScript的支持值得等待.

Vue的生态系统更多是TypeScript:

  1. *.vueTypeScript支持VSCode中的文件lint.看看这个问题vetur.

  2. 开源生态系统.

  3. vue-cli设计.点击我

所以,如果你有时间等待,你可以暂时观察一段时间.或者,您可以参考这些项目:TypeScript-Vue-Starter带有Typescript支持的Webpack模板.