vue项目中如何使用TypeScript相关配置

 更新时间:2023年11月22日 11:35:45   作者:妮子果酱  
这篇文章主要给大家介绍了关于vue项目中如何使用TypeScript相关配置的相关资料,typescript在开发过程中广泛被应用,在这里总结下项目中ts的应用,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、为什么要用typescript

TypeScript简单介绍:

  • 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会带来兼容性问题。
  • TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法。并在此之上对 JavaScript 添加了一些扩展,如 class / interface / module 等。这样会大大提升代码的可阅读性。

总结优势:

  • 静态类型检查: 类型校验,能够避免许多低级代码错误;
  • IDE 智能提示: 使用一个方法时,能清楚知道方法定义的参数和类型和返回值类型;使用一个对象时,只需要.就可以知道有哪些属性以及属性的类型;
  • 代码重构: 经过不停的需求迭代,代码重构避免不了,在重构时,如果前期有清晰和规范的接口定义、类定义等,对于重构帮助很大;
  • 规范性和可读性: 类似于强类型语言,有了合理的类型定义、接口定义等,对于代码实现的规范性和可读性都有很大提高,不然搜索整个项目这个方法在哪里调用、怎么定义等。个人认为最有价值点:写代码前,会先构思功能需求的整体代码架构。

二、vue+TpyeScript项目迁移

1.npm下载依赖包

npm install --save-dev typescript webpack webpack-cli ts-loader css-loader vue vue-loader vue-template-compiler

2.创建tsconfig.json

命令:

tsc --init
{
    "compilerOptions": {
        "outDir": "./built/",
        "sourceMap": true,
        "strict": true,
        "module": "es2015",
        "moduleResolution": "node",
        "target": "es5",
        "skipLibCheck": true,
        "esModuleInterop": true,
        "experimentalDecorators": true
    },
    "include": [
        "./src/**/*"
    ]
}

3.webpack.base.conf.js 中的配置

resolve: {
      extensions: ['.js', '.vue', '.json', 'ts', 'tsx'], // 新增了'ts', 'tsx'
      alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': resolve('src'),
      }
    },
    module: {
      rules: [
        {
          test: /\.ts$/,  // 用于加载项目中的ts文件
          exclude: /node_modules/,
          enforce: 'pre',
          loader: 'tslint-loader'
        },
        {
          test: /\.tsx?$/, // 用于加载项目中的tsx文件
          loader: 'ts-loader',
          exclude: /node_modules/,
          options: {
            appendTsSuffixTo: [/\.vue$/],
          }
        }]

4.配置package.json

"scripts": {
    "build": "webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

5.重命名main.js

  • 将main.js重命名为main.ts
  • 在webpack.base.conf.js中修改入口的文件名 entry: {app: ‘./src/main.ts’}

6.在main.ts同级目录下添加shims-tsx.d.ts(如果没有用tsx 语法就不用) 和 shims-vue.d.ts

 // vue/cli中的shims-tsx.d.ts
  // 作用: 为 JSX 语法的全局命名空间
  // 这是因为基于值的元素会简单的在它所在的作用域里按标识符查找
  // 此处使用的是无状态函数组件的方法来定义, 当在tsconfig内开启了jsx语法支持后, 其会自动识别对应的.tsx结尾的文件
  import Vue, { VNode } from 'vue'
  declare global {
    namespace JSX {
      // tslint:disable no-empty-interface
      interface Element extends VNode {}
      // tslint:disable no-empty-interface
      interface ElementClass extends Vue {}
      interface IntrinsicElements {
        [elem: string]: any
      }
    }
  }

  // vue/cli中的shims-vue.d.ts
  // 作用:为项目内所有的 vue 文件做模块声明, 毕竟 ts 默认只识别 .d.ts、.ts、.tsx 后缀的文件
  import Vue from "vue";
  import VueRouter, { Route } from "vue-router";

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

  declare module "vue/types/vue" {
    interface Vue {
      $router: VueRouter; // 这表示this下有这个东西
      $route: Route;
      $https: any;
      $urls: any;
      $Message: any;
      $Modal: any;
    }
  }

7.改造 .vue文件,将vue中script切换为<script lang="ts">;

8.改造.js文件,修改为ts语法,定义类型等

总结

到此这篇关于vue项目中如何使用TypeScript相关配置的文章就介绍到这了,更多相关vue中使用TS相关配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3官方Hooks的用法与实现原理

    Vue3官方Hooks的用法与实现原理

    Vue 3 引入了 Composition API,使得生命周期钩子(hooks)在函数式风格中更清晰地表达,下面就来介绍一下Vue3官方Hooks的用法与实现原理,感兴趣的可以了解一下
    2025-05-05
  • vue的hash值原理也是table切换实例代码

    vue的hash值原理也是table切换实例代码

    这篇文章主要介绍了vue的hash值原理也是table切换,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 如何为老vue项目添加vite支持详解

    如何为老vue项目添加vite支持详解

    Vite是一个开发环境工具,旨在提高我们的开发速度,下面这篇文章主要给大家介绍了关于如何为老vue项目添加vite支持的相关资料,需要的朋友可以参考下
    2021-09-09
  • Vue3使用Swiper实现轮播图示例详解

    Vue3使用Swiper实现轮播图示例详解

    这篇文章主要为大家介绍了Vue3使用Swiper实现轮播图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Vue设置页面轮询实现方式

    Vue设置页面轮询实现方式

    这篇文章主要介绍了Vue设置页面轮询实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-11-11
  • Vue3应对后端接口返回十万条数据的解决方案

    Vue3应对后端接口返回十万条数据的解决方案

    在前端开发中,我们有时会遇到后端接口直接返回 十万条数据 的情况,很多初学者会直接把数据全部 v-for 渲染到页面上,结果浏览器瞬间卡死甚至崩溃,本文将从问题原因出发,逐步给出几种常见解决方案,需要的朋友可以参考下
    2025-09-09
  • 深入详解Vue3实现多环境配置与切换方式

    深入详解Vue3实现多环境配置与切换方式

    这篇文章主要为大家详细介绍了Vue3中实现多环境配置与切换方式的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-09-09
  • vue中组件样式冲突的问题解决

    vue中组件样式冲突的问题解决

    默认情况下,写在.vue组件中的样式会全局生效,因此很容易造成组件之间的样式冲突问题,本文就来介绍一下如何解决此问题,感兴趣的可以了解一下
    2023-12-12
  • vue中axios封装使用的完整教程

    vue中axios封装使用的完整教程

    这篇文章主要给大家介绍了关于vue中axios封装使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Vue将将后端返回的list数据转化为树结构的实现

    Vue将将后端返回的list数据转化为树结构的实现

    本文主要介绍了Vue将将后端返回的list数据转化为树结构的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05

最新评论