使用 TypeScript 搭建基于 Vue 的项目

阅读时长 12 分钟读完

前言

Vue.js 是一个流行的 JavaScript 框架,它提供了许多工具和组件,使开发人员可以轻松地创建交互性和响应式的 Web 应用。TypeScript 是一个强类型语言,它为 JavaScript 提供了许多有用的功能和语言特性,例如类型检查和面向对象编程。使用 TypeScript 可以帮助我们在开发 Vue.js 应用时避免一些潜在的问题,提高代码质量和可维护性。

在本文中,我们将介绍如何使用 TypeScript 搭建基于 Vue 的项目,并提供一些例子和最佳实践。

准备工作

要开始使用 TypeScript 开发 Vue.js 应用,您需要满足以下要求:

  • Node.jsnpm (或 yarn

  • Vue CLI:一个用于创建和管理 Vue.js 项目的命令行工具。您可以使用以下命令安装 Vue CLI:

现在,我们已经准备好开始创建一个新的 Vue.js 项目了。

创建项目

到这里您已经安装好了 Vue CLI,接下来我们需要创建一个新的项目。在您喜欢的目录下打开命令行,然后运行以下命令:

在运行该命令时,Vue CLI 将提示您选择一种预设。一个预设是包含了一组默认插件和配置的模板。在这里,我们选择 Manually select features(手动选择特性),这样我们就可以自定义项目的配置。

接下来,Vue CLI 将按照我们的选择安装必需的依赖并创建一个 Vue.js 项目。在项目创建之后,我们可以打开项目并测试一下它是否工作正常。使用以下命令:

该命令将编译并启动本地开发服务器。当编译完成后,在浏览器中打开 URL http://localhost:8080,如果一切正常,那么您将在屏幕上看到 Vue.js 的默认欢迎页面。

集成 TypeScript

现在我们已经成功创建了一个 Vue.js 项目,接下来我们需要集成 TypeScript。幸运的是,Vue CLI 为我们提供了一个可用的插件,可以帮助我们在几分钟内将 TypeScript 添加到项目中。

我们需要使用以下命令安装 @vue/cli-plugin-typescript

该命令将添加 TypeScript 依赖项、配置文件和一个空的 TypeScript 文件到我们的项目中。

TypeScript 配置

在完成上面的步骤之后,我们需要做一些修改以确保 TypeScript 正确地与 Vue.js 集成。让我们打开 tsconfig.json 文件并修改如下:

-- -------------------- ---- -------
-
  ------------------ -
    --------- ---------
    --------- ---------
    --------- -----
    ------ -----------
    ------------------- -------
    ------------------ -----
    --------------- -----
    ----------------------------------- -----
    ----------------- -----
    ---------------- -----
    -------------------- -----
    -------------- -----
    ------------ -----
    ---------- -------
  --
  ---------- --------------- --------------- ---------------- ------------------
  ---------- ----------------
-

让我们逐一解释所有选项:

  • target:将编译的代码目标设置为 esnext
  • module:设置模块类型为 esnext
  • strict:启用严格模式,以启用所有的类型检查选项。
  • jsx:在 .tsx 文件中允许使用 JSX 语法。
  • moduleResolution:设置模块解析策略为 node
  • esModuleInterop:启用 ES 模块兼容性。
  • skipLibCheck:跳过检查 node_modules 中的类型定义文件。
  • forceConsistentCasingInFileNames:在文件名和路径中使用一致的大小写。
  • noImplicitThis:禁止隐式 any 类型的 this 值。
  • noImplicitAny:要求显式地给出所有的 any 类型。
  • noImplicitReturns:禁止缺少函数返回值。
  • declaration:生成类型声明文件。
  • sourceMap:生成调试源代码的 source maps。
  • baseUrl:用于解析非相对模块名称的基本目录路径。

特别地,这里我们使用了 skipLibCheck 选项来跳过检查 node_modules 中的类型定义文件。这是因为 node_modules 中的类型定义文件通常比较复杂,且通常已经在声明文件中进行了类型转换。使用 skipLibCheck 选项可以大大减少你的编译时间。

TypeScript 文件

下一步是创建我们的第一个 TypeScript 文件。让我们在 src 目录下创建一个名为 main.ts 的文件。然后将内容改为以下:

这里,我们导入了 Vue 和 App 组件。我们同时创建了一个新的 Vue 实例并将其绑定到 #app 元素上。

App.vue 文件中,需要将 .js 文件改为 .ts 并添加类型声明:

在上面的代码中,我们使用了 vue-property-decorator 库来帮助我们定义组件。我们将 App 组件中的 msg 属性的类型设置为字符串,并将其初始值设置为 Hello, TypeScript!

TypeScript 和 Vue.js 组件

接下来,我们将介绍一些有用的技巧来帮助您使用 TypeScript 开发 Vue.js 组件。

Prop 类型检查

使用 TypeScript,我们可以为组件中的属性定义类型。在 App.vue 组件中,我们添加一个名为 title 的属性并将其类型设置为字符串。

-- -------------------- ---- -------
----------
  -----
    ------ ----- -------
    ----- --- ------
  ------
-----------

------- ----------
  ------ - ---- ---------- ---- - ---- -------------------------

  ----------
  ------ ------- ----- --- ------- --- -
    ------------- ------- -------
    ---- ------ - ------- -------------
  -
---------

正如上面所示,我们使用了 @Prop 装饰器来定义 title 属性的类型。我们将其类型设置为 String,因为它是一个字符串。

计算属性

我们可以使用 TypeScript 定义组件的计算属性。让我们在组件中添加一个名为 fullName 的计算属性,它将返回 this.firstNamethis.lastName 的拼接字符串。

-- -------------------- ---- -------
----------
  -----
    ------ -------- -------
    ----- --- ------
  ------
-----------

------- ----------
  ------ - ---- --------- - ---- -------------------------

  ----------
  ------ ------- ----- --- ------- --- -
    ---------- ------ - -------
    --------- ------ - ------
    ---- ------ - ------- -------------

    --- ----------- ------ -
      ------ ------------------ ------------------
    -
  -
---------

在这里,我们使用了 get 访问器来定义计算属性。我们将 fullName 的类型设置为字符串,因为它返回一个字符串。

添加事件

我们可以使用 TypeScript 定义事件处理程序。让我们添加一个按钮并在单击时调用一个方法。

-- -------------------- ---- -------
----------
  -----
    ------- ---------------------- -----------
    ------ -------- -------
    ----- --- ------
  ------
-----------

------- ----------
  ------ - ---- --------- - ---- -------------------------

  ----------
  ------ ------- ----- --- ------- --- -
    ---------- ------ - -------
    --------- ------ - ------
    ---- ------ - ------- -------------

    --- ----------- ------ -
      ------ ------------------ ------------------
    -

    ---------- ---- -
      ------------- --------------------
    -
  -
---------

在这里,我们创建了一个名为 onClick 的方法,并为其添加了事件处理程序。我们使用 void 来指示该方法不返回任何内容。

使用 Vuex

如果您使用 Vuex 管理组件状态,那么您需要了解如何将其与 TypeScript 集成。

首先,让我们创建一个名为 store.ts 的文件并设置其内容。

-- -------------------- ---- -------
------ --- ---- ------
------ ---- ---- -------

--------------

------ ------- --- ------------
  ------ -
    ------ -
  --
  ---------- -
    ----------------- ---- -
      --------------
    -
  --
  -------- -
    ------------------- ---- -
      ----------------------------
    -
  --
  -------- -
    ------------- ------ -
      ------ ------------
    -
  --
  -------- -
    -- ---- ------- ----
  -
---

在上面的代码中,我们创建了一个基本的 Vuex Store,并定义了状态、mutations、actions 和 getters。

接下来,打开 main.ts 并使用以下代码导入我们的 store.ts 文件。

-- -------------------- ---- -------
------ --- ---- ------
------ ----- ---- ----------
------ --- ---- ------------

--- -----
  --- -------
  ------
  ------- - -- ------
---

最后,让我们在 App.vue 组件中使用在 Vuex Store 中定义的计算属性。

-- -------------------- ---- -------
----------
  -----
    ------- ---------------------- -----------
    ------ -------- -------
    ----- --- ------
    --------- -- ----- ------
  ------
-----------

------- ----------
  ------ - ---- --------- - ---- -------------------------
  ------ - ------- ------ - ---- -------------
  
  ----------
  ------ ------- ----- --- ------- --- -
    ---------- ------ - -------
    --------- ------ - ------
    ---- ------ - ------- -------------

    ------- ------- -------
    ------- ----------- -- -- -----

    --- ----------- ------ -
      ------ ------------------ ------------------
    -

    ---------- ---- -
      -----------------
    -
  -
---------

在这里,我们导入了 vuex-class 库,使用 @Getter 装饰器定义了 count 计算属性。我们还使用了 @Action 装饰器来定义 increment 方法。在单击按钮时,我们会调用该方法以增加 count 的值。

结论

在本文中,我们介绍了如何使用 TypeScript 搭建基于 Vue.js 的项目。我们从创建项目开始,并介绍了如何集成 TypeScript。我们还介绍了一些有用的技巧,例如为组件属性定义类型、定义计算属性和事件处理程序、以及如何使用 Vuex 管理应用程序状态。

尽管 TypeScript 可以帮助我们编写更安全、更可靠的代码,但它并不是万能的。在使用 TypeScript 开发 Vue.js 应用之前,您需要了解 TypeScript 的基础知识和 Vue.js 的基础知识,这样您才能充分利用这两个工具所提供的功能。

我们希望这篇文章能够帮助您更好地理解如何使用 TypeScript 开发 Vue.js 应用,也希望您能从中获得一些有用的技巧和最佳实践。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6719e1f69b4aadf9e0067cf7

纠错
反馈