一、本文引子
uniapp(3.8.4.20230531)+ vue3 + ts + vite 項目
在搭建這個base項目的時候出現(xiàn)紅素波浪線如圖,代碼運行正常,但是看起來很難受,于是各種查找,能找到的資料很少,可能和我提問不夠準(zhǔn)確也有關(guān)系,有人說刪除tsconfig.js就可以了,我測試了,結(jié)果真的可以,但是這絕不是我想要的,這明顯忽略了tsconfig.js這個文件的意義,繼續(xù)研究吧!
二、typescript類型斷言
1、使用as關(guān)鍵字實現(xiàn)類型斷言。
2、關(guān)鍵字 as 后面的類型是一個更加具體的類型(videoTiem是videoList的子類型)。
3、通過類型斷言?,類型變得更加具體,這樣就可以訪問videoItem特有的屬性或方法了。
有時候你會比TS更加明確一個值的類型,此時,可以使用類型斷言來指定更具體的類型。
想起來這句話于是測試一下,果然有效果,但還是不滿意,這也不是我要的
三、shims-vue.d.ts
shims-vue.d.ts是一個TypeScript類型定義文件,在使用TypeScript編寫Vue.js應(yīng)用程序時,它有助于編譯器識別Vue.js語法并提供類型檢查。它為Vue.js中的一些全局變量和函數(shù)提供了類型定義,例如Vue構(gòu)造函數(shù)、Vue實例選項等。在沒有shims-vue.d.ts文件的情況下,編譯器可能會報告錯誤或警告,因為它無法識別Vue.js的語法。
問題的根本原因找到了,就是這個文件配置的問題,修改后的文件記錄如下
// import 'vue' // 必須要引入vue,否則就成了覆蓋
import { StateType } from '@/store/index.d'
import { InjectionKey } from 'vue'
import { Store } from 'vuex'
/**
* 這里為什么用vue,而不用@vue/runtime-core,是因為使用pnpm安裝依賴,node_modules中沒有@vue/runtime-core,
* 會導(dǎo)致找不到模塊而類型聲明失敗。
*/
// declare module '@vue/runtime-core' {
declare module 'vue' {
interface ComponentCustomProperties {
// 這里擴展this.$store,還可以在這里對this添加其他的聲明
$store: Store<StateType>
}
}
// 擴展useStore聲明
declare module 'vuex' {
export function useStore<S = StateType>(injectKey?: InjectionKey<Store<S>> | string): Store<S>
}
// 擴展mock
declare module 'mockjs' {
/** 所有已注冊的mock規(guī)則 */
const _mocked: Record<string, any>
}
export {}
四、歡迎交流指正,關(guān)注我,一起學(xué)習(xí)。
五、參考鏈接
小程序-uniapp:uni-app-base 項目基礎(chǔ)配置及使用,開箱可用_snow@li的博客-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-496677.html
TypeScript:熟練掌握TypeScript_snow@li的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-496677.html
到了這里,關(guān)于vue3+ts:shims-vue.d.ts的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!