vue項(xiàng)目使用typescript創(chuàng)建抽象類及其使用方式
如題,可以在vue項(xiàng)目使用typescript創(chuàng)建抽象類,然后使用這個(gè)抽象類。
通過(guò)TypeScript,可以在前端應(yīng)用抽象類了。
抽象類的好處,可以同時(shí)滿足繼承和多態(tài),好處多多。
以vue3為例:
1、創(chuàng)建抽象類
據(jù)說(shuō)js類中,“#”開(kāi)頭的變量或方法,就是私有變量或方法(見(jiàn)拙作《vue項(xiàng)目中的類》)。
但是,現(xiàn)在TypeScript有private、protected、public等全套關(guān)鍵詞。
export abstract class ListPage {
#queryForm //查詢框表單對(duì)象,例如:const queryForm = ref(),<el-form ref="queryForm">
#myPageSetup //分頁(yè)對(duì)象,例如:const myPageSetup = cloneDeep(pageSetup)
constructor(queryForm, pageSetup) {
this.#queryForm = queryForm
this.#myPageSetup = pageSetup
}
//列表數(shù)據(jù)請(qǐng)求。抽象方法,子類必須實(shí)現(xiàn)
abstract doQuery(): void
//查詢
onSearch = () => {
this.#myPageSetup.pageIndex = 1
this.doQuery()
}
//重置
onReset = () => {
this.#queryForm.value.resetFields()
}
//跳轉(zhuǎn)至指定頁(yè)碼
onPageChange = (pageIndex) => {
this.#myPageSetup.pageIndex = pageIndex
this.doQuery()
}
//改變分頁(yè)大小
onPageSizeChange = (size) => {
this.#myPageSetup.pageIndex = 1
this.#myPageSetup.pageSize = size
this.doQuery()
}
//排序
onColumnSort = ({ prop, order }) => {
this.#myPageSetup.order = order
this.#myPageSetup.sort = prop
this.doQuery()
}
}
2、應(yīng)用該抽象類
class MyListPage extends ListPage {
constructor() {
super(defaultQueryForm, myPageSetup) // 在派生類的構(gòu)造函數(shù)中必須調(diào)用super()
}
//實(shí)現(xiàn)抽象方法。async代表異步,基類中的沒(méi)有聲明是否異步,既可以異步,也可以不異步。
doQuery = async () => {
//巴拉巴拉巴拉
}
}
const myListPage = new MyListPage()
myListPage.onSearch()
3、心得
現(xiàn)在前端跟后端越來(lái)越像了。再也不是以前那種相對(duì)簡(jiǎn)單的三劍客了。
本來(lái)吧,js廣受歡迎,一個(gè)原因是它非常靈活,沒(méi)有什么類型的限制,怎么寫(xiě)都可以。
現(xiàn)在引入了TypeScript,到處聲明類型,神憎鬼厭。有什么好處呢?
難道聲明了強(qiáng)類型后,沒(méi)有類型轉(zhuǎn)換,程序執(zhí)行效率就提高了?
未必吧,瀏覽器好像不直接支持typescript,最終還是要轉(zhuǎn)換成原生js才能執(zhí)行吧。
這么說(shuō)的話,所謂TypeScript也者,也不過(guò)是一種語(yǔ)法糖,讓我們寫(xiě)代碼時(shí)可以寫(xiě)這寫(xiě)那,假裝在面向?qū)ο缶幊潭选?/p>
有沒(méi)有跟我一樣,覺(jué)得這樣反而不方便的?
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3新增時(shí)自動(dòng)獲取當(dāng)前時(shí)間的操作方法
這篇文章主要介紹了Vue3新增時(shí)自動(dòng)獲取當(dāng)前時(shí)間的操作方法,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
vue實(shí)現(xiàn)水波漣漪效果的點(diǎn)擊反饋指令
鼠標(biāo)移入時(shí)的小手、鼠標(biāo)點(diǎn)擊時(shí)按鈕下壓彈起的動(dòng)畫(huà)、觸屏應(yīng)用點(diǎn)擊時(shí)的屏幕震動(dòng),這些效果也被統(tǒng)稱為點(diǎn)擊反饋,雖然看似是應(yīng)用中的細(xì)枝末節(jié),但是只要稍微投入一點(diǎn)點(diǎn)心思,帶來(lái)的用戶體驗(yàn)提升是十分明顯的,這里作者為小伙伴們推薦一種作者最喜歡的點(diǎn)擊反饋效果。2021-05-05
vue-cli項(xiàng)目根據(jù)線上環(huán)境分別打出測(cè)試包和生產(chǎn)包
這篇文章主要介紹了vue-cli項(xiàng)目根據(jù)線上環(huán)境打出測(cè)試包和生產(chǎn)包的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)抖音時(shí)間轉(zhuǎn)盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
從零開(kāi)始Vue3數(shù)據(jù)交互之promise用法詳解
這篇文章主要介紹了Axios的基本使用,包括異步編程的基礎(chǔ)知識(shí),如Promise的介紹、特點(diǎn)和基本用法,以及如何使用then、catch和async/await來(lái)處理異步操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
VUE實(shí)現(xiàn)分布式醫(yī)療掛號(hào)系統(tǒng)預(yù)約掛號(hào)首頁(yè)步驟詳情
這篇文章主要為大家介紹了VUE實(shí)現(xiàn)分布式醫(yī)療掛號(hào)系統(tǒng)預(yù)約掛號(hào)首頁(yè)步驟詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
vue監(jiān)聽(tīng)對(duì)象及對(duì)象屬性問(wèn)題
這篇文章主要介紹了vue監(jiān)聽(tīng)對(duì)象及對(duì)象屬性問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08

