最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Vue中使用TypeScript的幾種方式

 更新時間:2026年05月26日 10:11:38   作者:穆金秋  
本文主要介紹了在Vue中使用TypeScript的幾種方式,包括通過<script lang="ts">結合defineComponent,使用Composition API + <script setup lang="ts">和TypeScript定義Props和Emits類型,下面就來詳細的介紹一下

Vue中使用TypeScript的幾種方式:

  1. 通過<script lang="ts">結合defineComponent;
  2. 推薦使用Composition API + <script setup lang="ts">實現類型推斷;
  3. 使用TypeScript定義Props和Emits類型。

配置步驟包括安裝依賴、設置tsconfig.json和env.d.ts文件。

使用TypeScript能提供類型安全、更好的IDE支持、清晰的接口定義和更高的代碼可維護性。

主流開發(fā)工具如VSCode、WebStorm、Vite和Vue CLI都提供良好支持。

在 Vue 中使用 TypeScript 的幾種方式

1.使用<script lang="ts">

<template>
  <div>{{ message }}</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
  data() {
    return {
      message: 'Hello TypeScript!' as string
    }
  },
  methods: {
    greet(name: string): string {
      return `Hello, ${name}!`
    }
  }
})
</script>

2.使用 Composition API +<script setup lang="ts">(推薦)

<template>
  <div>{{ message }}</div>
  <button @click="increment">Count: {{ count }}</button>
</template>

<script setup lang="ts">
import { ref, computed } from 'vue'

// 類型推斷
const count = ref(0) // 自動推斷為 Ref<number>
const message = ref('Hello') // 自動推斷為 Ref<string>

// 顯式類型聲明
const user = ref<{ name: string; age: number }>({
  name: 'John',
  age: 25
})

// 類型化的函數
const increment = (amount: number = 1): void => {
  count.value += amount
}

// 計算屬性自動推斷類型
const doubleCount = computed(() => count.value * 2)
</script>

3.使用 TypeScript 定義 Props

<template>
  <div>{{ title }} - {{ count }}</div>
</template>

<script setup lang="ts">
interface Props {
  title: string
  count?: number
  items: string[]
}

const props = withDefaults(defineProps<Props>(), {
  count: 0
})
</script>

4.類型化的 Emits

<script setup lang="ts">
// 定義 emits 的類型
const emit = defineEmits<{
  (e: 'update', value: number): void
  (e: 'submit', data: { name: string; age: number }): void
}>()

const handleClick = () => {
  emit('update', 10)
  emit('submit', { name: 'John', age: 25 })
}
</script>

配置步驟

1.安裝必要的依賴

npm install -D typescript @vue/tsconfig @vue/runtime-dom
# 或
yarn add -D typescript @vue/tsconfig @vue/runtime-dom

2.創(chuàng)建/更新 tsconfig.json

{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
  "exclude": ["src/**/__tests__/*"],
  "compilerOptions": {
    "composite": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

3.創(chuàng)建 env.d.ts 文件

/// <reference types="vite/client" />
declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

使用 TypeScript 的好處

  • 類型安全:在編譯時捕獲類型錯誤
  • 更好的 IDE 支持:自動補全、類型提示、重構
  • 清晰的接口定義:明確的 Props 和 Emits 類型
  • 代碼可維護性:類型作為文檔,提高代碼可讀性

常見工具支持

  • VSCode:配合 Volar 插件
  • WebStorm:內置支持
  • Vite:開箱即用
  • Vue CLI:通過 vue add typescript

到此這篇關于在Vue中使用TypeScript的幾種方式的文章就介紹到這了,更多相關Vue使用TypeScript內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue 集成 storybook的方法

    Vue 集成 storybook的方法

    這篇文章主要介紹了Vue 集成 storybook的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue 百度地圖(vue-baidu-map)繪制方向箭頭折線實例代碼詳解

    vue 百度地圖(vue-baidu-map)繪制方向箭頭折線實例代碼詳解

    這篇文章主要介紹了vue 百度地圖(vue-baidu-map)繪制方向箭頭折線,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue使用event.dataTransfer實現A容器數據拖拽復制到B容器方式

    vue使用event.dataTransfer實現A容器數據拖拽復制到B容器方式

    這篇文章主要介紹了vue使用event.dataTransfer實現A容器數據拖拽復制到B容器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-02-02
  • vue Watch和Computed的使用總結

    vue Watch和Computed的使用總結

    本文主要介紹Vue.js中監(jiān)聽器和計算屬性的相關知識點,包括對普通屬性的監(jiān)聽、對對象的監(jiān)聽、對數組的監(jiān)聽,以及計算屬性的Set方法,計算屬性與監(jiān)聽器的區(qū)別等等
    2021-05-05
  • 基于Vue3實現一個簡歷生成工具

    基于Vue3實現一個簡歷生成工具

    本文介紹如何從零開始構建一個基于 Vue3 + Markdown 的在線簡歷生成工具,支持實時編輯預覽、模板切換、自定義樣式配置以及導出為 PDF,感興趣的小伙伴可以參考閱讀本文
    2025-07-07
  • element-ui中使用upload組件獲取上傳文件信息

    element-ui中使用upload組件獲取上傳文件信息

    這篇文章主要介紹了element-ui中使用upload組件獲取上傳文件信息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue使用element-ui按需引入時踩過的那些坑

    vue使用element-ui按需引入時踩過的那些坑

    Element-UI是基于vue實現的一套不依賴業(yè)務的UI組件庫,提供了豐富的PC端組件,減少用戶對常用組件的封裝,降低了開發(fā)的難易程度,下面這篇文章主要給大家介紹了關于vue使用element-ui按需引入時踩過的那些坑,需要的朋友可以參考下
    2022-05-05
  • Vue插件從封裝到發(fā)布的完整步驟記錄

    Vue插件從封裝到發(fā)布的完整步驟記錄

    這篇文章主要給大家介紹了關于Vue插件從封裝到發(fā)布的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • vue3父組件調用子組件方法的思路及實例代碼

    vue3父組件調用子組件方法的思路及實例代碼

    在Vue.js框架中父子組件之間的通信是常見的需求,其中父組件調用子組件的方法是實現特定功能的重要方式,這篇文章主要介紹了vue3父組件調用子組件方法的相關資料,需要的朋友可以參考下
    2025-06-06
  • Vue文件的組織結構不合理之優(yōu)化項目結構詳解

    Vue文件的組織結構不合理之優(yōu)化項目結構詳解

    在這篇博客中,我們將探討 Vue 文件組織結構不合理的幾個常見問題,并提供解決方案,以幫助開發(fā)者創(chuàng)建更清晰、更高效的項目文件結構,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

资溪县| 崇信县| 阿拉善左旗| 泾源县| 长武县| 冕宁县| 青岛市| 攀枝花市| 大余县| 普格县| 丹东市| 凤城市| 进贤县| 株洲市| 光泽县| 济源市| 武山县| 辉南县| 岳普湖县| 界首市| 柳江县| 冕宁县| 尚义县| 咸宁市| 馆陶县| 安福县| 喀喇沁旗| 文昌市| 濉溪县| 文登市| 绥中县| 沙湾县| 昆山市| 九寨沟县| 霞浦县| 正宁县| 馆陶县| 台东县| 霍山县| 高要市| 龙泉市|