中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

vs做網(wǎng)站連數(shù)據(jù)庫優(yōu)化推廣網(wǎng)站怎么做最好

vs做網(wǎng)站連數(shù)據(jù)庫,優(yōu)化推廣網(wǎng)站怎么做最好,怎樣做自己的網(wǎng)站加入百度聯(lián)盟,so域名的網(wǎng)站有哪些像 TypeScript 這樣的類型系統(tǒng)可以在編譯時通過靜態(tài)分析檢測出很多常見錯誤。這減少了生產(chǎn)環(huán)境中的運行時錯誤,也讓我們在重構(gòu)大型項目的時候更有信心。通過 IDE 中基于類型的自動補全,TypeScript 還改善了開發(fā)體驗和效率。 一、項目配置 在使用 npm cr…

????????像 TypeScript 這樣的類型系統(tǒng)可以在編譯時通過靜態(tài)分析檢測出很多常見錯誤。這減少了生產(chǎn)環(huán)境中的運行時錯誤,也讓我們在重構(gòu)大型項目的時候更有信心。通過 IDE 中基于類型的自動補全,TypeScript 還改善了開發(fā)體驗和效率。

一、項目配置

? ? ? ? 在使用 npm create vue@lates t創(chuàng)建項目時有是否添加typescript選項。

? ? ? ? 如果沒有在創(chuàng)建項目時添加也可以用下面的命令在已有的項目中添加:

  • npm install -D?typescript 最新的穩(wěn)定版本
  • tsc --init生成tsconfig.json文件

? ? ? ? 在tsconfig.json配置文件中添加配置避免使用import時報錯問題:

{"compilerOptions": {/* 這里省略了其他配置*/"noImplicitAny": false,"allowJs": true,"baseUrl": "src","paths": {"@/*": ["./*"],"@": ["./"]}},// include也需要配置以下:"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],"exclude": ["node_modules"]
}

二、為組件的 props 標(biāo)注類型

? ? ? ? 為子組件的屬性指定類型:

<script setup lang="ts">
const props = defineProps({foo: {type: String, required: true},bar: Number
})
</script><template>{{ foo }} - {{ bar }}
</template>

? ? ? ? 在父組件中使用:

<script lang="ts" setup>
import TypeScript from "@/components/TypeScript.vue";
import {ref} from "vue";
// 這里不是數(shù)值類型將會報錯
const number = ref(0);
</script><template><type-script foo="A" :bar="number"></type-script>
</template>

????????這被稱之為“運行時聲明”,因為傳遞給?defineProps()?的參數(shù)會作為運行時的?props?選項使用。然而,通過泛型參數(shù)來定義 props 的類型通常更直接:

<script setup lang="ts">
const props = defineProps<{foo: stringbar?: number
}>()
</script>

????????這被稱之為“基于類型的聲明”。編譯器會盡可能地嘗試根據(jù)類型參數(shù)推導(dǎo)出等價的運行時選項。在這種場景下,我們第二個例子中編譯出的運行時選項和第一個是完全一致的。

????????基于類型的聲明或者運行時聲明可以擇一使用,但是不能同時使用。我們也可以將 props 的類型移入一個單獨的接口中:

<script setup lang="ts">
interface Props {foo: stringbar?: number
}const props = defineProps<Props>()
</script>

????????這同樣適用于?Props?從另一個源文件中導(dǎo)入的情況。該功能要求 TypeScript 作為 Vue 的一個 peer dependency。

<script setup lang="ts">
import type { Props } from './foo'const props = defineProps<Props>()
</script>

1、Props 解構(gòu)默認(rèn)值

????????當(dāng)使用基于類型的聲明時,我們失去了為 props 聲明默認(rèn)值的能力。這可以通過?withDefaults?編譯器宏解決:

<script setup lang="ts">
export interface Props {msg?: stringlabels?: string[]
}// 為 Props提供默認(rèn)值
const props = withDefaults(defineProps<Props>(), {msg: 'hello',labels: () => ['one', 'two']
})
</script><template>{{ msg }} - {{ labels }}
</template>

????????這將被編譯為等效的運行時 props?default?選項。此外,withDefaults?幫助程序為默認(rèn)值提供類型檢查,并確保返回的 props 類型刪除了已聲明默認(rèn)值的屬性的可選標(biāo)志。

2、非?<script setup>?場景下

????????如果沒有使用?<script setup>,那么為了開啟 props 的類型推導(dǎo),必須使用?defineComponent()。傳入?setup()?的 props 對象類型是從?props?選項中推導(dǎo)而來。

import { defineComponent } from 'vue'export default defineComponent({props: {message: String},setup(props) {props.message // <-- 類型:string}
})

3、復(fù)雜的 prop 類型

????????通過基于類型的聲明,一個 prop 可以像使用其他任何類型一樣使用一個復(fù)雜類型:

<script setup lang="ts">
interface Book {title: stringauthor: stringyear: number
}const props = defineProps<{book: Book
}>()
</script>

????????對于運行時聲明,我們可以使用?PropType?工具類型:

<script setup lang="ts">
import type { PropType } from 'vue'interface Book {title: stringauthor: stringyear: number
}const props = defineProps({book: Object as PropType<Book>
})
</script><template>{{ book }}
</template>

? ? ? ? 在父組件中使用:

<script lang="ts" setup>
import TypeScript from "@/components/TypeScript.vue";
import {reactive} from "vue";
// 會進(jìn)行類型檢查
const book = reactive({title: "A",author: "B",year: 2024
});
</script><template><type-script :book="book"></type-script>
</template>

三、為組件的 emits 標(biāo)注類型

????????在?<script setup>?中,emit?函數(shù)的類型標(biāo)注也可以通過運行時聲明或是類型聲明進(jìn)行:

<script setup lang="ts">
/*
// 運行時
const emit = defineEmits(['change', 'update'])// 基于選項
const emit = defineEmits({change: (id: number) => {// 返回 `true` 或 `false`// 表明驗證通過或失敗},update: (value: string) => {// 返回 `true` 或 `false`// 表明驗證通過或失敗}
})// 基于類型
const emit = defineEmits<{(e: 'change', id: number): void(e: 'update', value: string): void
}>()
*/
// 3.3+: 可選的、更簡潔的語法
const emit = defineEmits<{change: [id: number]update: [value: string]
}>()
</script><template><button @click="$emit('change',1)">按鈕1</button><button @click="$emit('update','a')">按鈕2</button>
</template>

? ? ? ? 在父組件中使用:

<script lang="ts" setup>
import TypeScript from "@/components/TypeScript.vue";
// 點擊按鈕1觸發(fā),獲取傳遞的參數(shù)
function change(args) {console.log(args);
}
// 點擊按鈕2觸發(fā),獲取傳遞的參數(shù)
function update(args) {console.log(args);
}</script><template><type-script @change="change" @update="update"></type-script>
</template>

????????類型參數(shù)可以是以下的一種:

  1. 一個可調(diào)用的函數(shù)類型,但是寫作一個包含調(diào)用簽名的類型字面量。它將被用作返回的?emit?函數(shù)的類型。
  2. 一個類型字面量,其中鍵是事件名稱,值是數(shù)組或元組類型,表示事件的附加接受參數(shù)。上面的示例使用了具名元組,因此每個參數(shù)都可以有一個顯式的名稱。

????????我們可以看到,基于類型的聲明使我們可以對所觸發(fā)事件的類型進(jìn)行更細(xì)粒度的控制。若沒有使用?<script setup>defineComponent()?也可以根據(jù)?emits?選項推導(dǎo)暴露在 setup 上下文中的?emit?函數(shù)的類型:

import { defineComponent } from 'vue'export default defineComponent({emits: ['change'],setup(props, { emit }) {emit('change') // <-- 類型檢查 / 自動補全}
})
http://www.risenshineclean.com/news/66032.html

相關(guān)文章:

  • 網(wǎng)站規(guī)劃與設(shè)計范文太原網(wǎng)站排名推廣
  • 國內(nèi)做外貿(mào)網(wǎng)站的有哪些資料遼寧網(wǎng)站建設(shè)
  • 網(wǎng)絡(luò)營銷工作網(wǎng)站seo優(yōu)化價格
  • 直接做的黃頁視頻網(wǎng)站濟南seo優(yōu)化公司
  • 網(wǎng)站開發(fā)用什么系統(tǒng)比較好seo是做什么工作內(nèi)容
  • 做app布局參考哪個網(wǎng)站紹興seo排名外包
  • 免費行情軟件app網(wǎng)站mnu萬網(wǎng)域名查詢工具
  • 做鞋子批發(fā)的網(wǎng)站有哪些強力搜索引擎
  • 第三方免費做網(wǎng)站seo云優(yōu)化公司
  • 網(wǎng)站獲取訪客qq號碼怎么接app推廣的單子
  • app手機網(wǎng)站模板免費下載網(wǎng)站seo外包公司有哪些
  • 關(guān)于做網(wǎng)站書籍關(guān)鍵詞組合工具
  • 大學(xué)生個人網(wǎng)站怎么做seo技術(shù)學(xué)院
  • 網(wǎng)站如何在工信部備案信息網(wǎng)站設(shè)計公司模板
  • 南通網(wǎng)站建設(shè)seo班級優(yōu)化大師
  • 南和網(wǎng)站建設(shè)公司最近國際時事熱點事件
  • 鄭州seo優(yōu)化網(wǎng)站seo優(yōu)化心得
  • 快速搭建網(wǎng)站的方法百度投訴中心
  • icp網(wǎng)站備案密碼找回百度統(tǒng)計數(shù)據(jù)
  • 做圖賺錢的網(wǎng)站創(chuàng)量廣告投放平臺
  • 哪個網(wǎng)站做布料好智能建站網(wǎng)站模板
  • 建設(shè)寧波市分行的互聯(lián)網(wǎng)網(wǎng)站國際新聞今天最新消息
  • 群暉nas可以做網(wǎng)站嗎如何建立網(wǎng)站平臺
  • 沈陽網(wǎng)站建設(shè)推廣南京seo網(wǎng)絡(luò)推廣
  • 怎么用2013做網(wǎng)站谷歌廣告上海有限公司官網(wǎng)
  • 網(wǎng)站轉(zhuǎn)app免費百度搜索風(fēng)云榜小說總榜
  • 營銷型網(wǎng)站收費搜狗登錄入口
  • WordPress采集中文永久免費版下載單頁關(guān)鍵詞優(yōu)化費用
  • 自己怎樣做淘客網(wǎng)站91永久免費海外地域網(wǎng)名
  • 最好網(wǎng)站建設(shè)公司排名寧波優(yōu)化網(wǎng)頁基本流程