标签搜索

vue-cli集成TypeScript

cicaba
2019-04-09 / 0 评论 / 2 阅读 / 正在检测是否收录...

1- 安装ts-loader和typescript

npm install --save-dev ts-loader@3 typescript
[email protected]使用的webpack为3, 所以必须使用ts-loader@3

2- 修改webpack.base.conf.js配置文件

修改webpack.base.conf.js下的entry>app为'./src/main.ts'
extensions: ['.js', '.vue', '.json', '.ts', '.tsx']//添加'.ts', '.tsx' 文件引入不用写后缀
    rules: [
    {
      test: /\.tsx?$/,
      loader: 'ts-loader',
      exclude: /node_modules/,
      options: {
        appendTsSuffixTo: [/\.vue$/],
      }
    },//添加tsloader加载器
    ...其他
  ]

3- 在src目录下新建一个文件vue-shims.d.ts,用于识别单文件vue内的ts代码

declare module "*.vue" {
  import Vue from "vue";
  export default Vue;
}

4- 在项目根目录下建立TypeScript配置文件tsconfig.json

{
  "compilerOptions": {
    "strict": true,
    "module": "es2015",
    "moduleResolution": "node",
    "target": "es5",
    "allowSyntheticDefaultImports": true,
    "lib": [
      "es2017",
      "dom"
    ]
  }
}
//"jsx": "preserve" jsx支持

5- 修改main.js后缀改为ts, 添加引入文件的的后缀.
6- 修改router.js后缀改为ts.
7- 测试

//下面可以测试是否集成成功,编辑src/components/Hello.vue文件,修改
<script lang="ts">
  import Vue, {ComponentOptions} from 'vue'
  export default {
    name: 'hello',
    data() {
      return {
        msg: 'this is a typescript project now'
      }
    }
  } as ComponentOptions<Vue>
</script>

8- 配置官方推荐的,vue-class-component

修改ts配置文件,增加以下两项配置
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,

使用vue-class-component后,初始数据可以直接声明为实例的属性,而不需放入data() {return{}}中,组件方法也可以直接声明为实例的方法,如官方实例,更多使用方法可以参考其官方文档

import Vue from 'vue'
import Component from 'vue-class-component'
// @Component 修饰符注明了此类为一个 Vue 组件
@Component({
  // 所有的组件选项都可以放在这里
  template: '<button @click="onClick">Click!</button>'
})
export default class MyComponent extends Vue {
  // 初始数据可以直接声明为实例的属性
  message: string = 'Hello!'
  // 组件方法也可以直接声明为实例的方法
  onClick (): void {
    window.alert(this.message)
  }
}

问题
1- ts 无法识别 require
yarn add @types/webpack-env -D

0

评论 (0)

取消