一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 不用typsescript如何使用類型增強功能

不用typsescript如何使用類型增強功能

2022-02-12 18:25小云菜 js教程

這篇文章主要給大家介紹了關于不用typsescript如何使用類型增強功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

由于 JS 的弱類型、寬松的編寫規范、以及開發工具的弱雞支持,我們在維護前人的代碼時,經常會出現不知道某一個方法或字段命名來自于哪里,一定要在全局搜索以后慢慢篩查才能找到

同樣我們在使用接口返回的對象字段時,也不知其類型幾何,意思幾何

甚至在我們使用掛載到 vue 全局對象上的方法時,純粹靠猜,尤其是當函數可以接收多種類型的時候,很痛苦

先說目的:我們希望一切資源皆可索引到其定義或來源,可以有代碼補全,在vscode內ctr+鼠標左鍵皆可導航到,提高效率,用的爽

具體配置信息

配置全局jsconfig.json

我們習慣在wepback內配置相關路徑別名,為了讓vscode識別,我們需要做如下配置

{
 "compilerOptions": {
 "target": "ES6",
 "module": "commonjs",
 "allowSyntheticDefaultImports": true,
 "baseUrl": "./",
 "paths": {
  "@/*": ["src/*"]
 }
 },
 "exclude": ["node_modules", "dist"],
 "include": ["src/**/*", "global.d.ts"]
}

安裝插件vue-helper

安裝該插件是為了解決vscode-intelligence不識別.vue文件,進而無法導航的問題

不過依然存在bug,如果import x變量名不和file-name相同,則無法識別。

終極解決方案是對 .vue文件進行js托管

export { default } from "./index.vue"

vscode可以一步完美導航到具體頁面

討厭寫重復代碼?定義個 snippet

 "export default": {
 "scope": "javascript,typescript",
 "prefix": "expd",

 "body": ["export {default} from "./index.vue${1}";"]
 },
 "export default as": {
 "scope": "javascript,typescript",
 "prefix": "expdas",

 "body": ["export {default as ${2}} from "./index.vue${1}";"]
 },

為掛在到Vue上的方法或屬性添加類型聲明

根目錄下新建global.d.ts, 并添加至jsconfig.json: include

// global.d.ts
import Vue from "vue"
type FnVoid = (...ags: any[]) => void

declare module "*.vue" {
 export default Vue
}
declare module "vue/types/vue" {
 interface Vue {
 $$title: (title: string) => void
 $$login: FnVoid
 // ......
 }
}

寫正確的注釋

vscode現今對 jsdoc語法的支持愈發完善,在代碼編寫代碼階段可以給我們強大的代碼提示、代碼補全以及代碼檢查

比如我們可以在注釋內定義變量,針對列表返回的接口,且不需要定義 model 對象來承接數據的話,自定義變量就很有用了

不用typsescript如何使用類型增強功能

甚至于還支持import語法

不用typsescript如何使用類型增強功能

不過,不依附于方法之上的注釋變量是不可用的

比如我新建一個文件,并寫入以下注釋

/**
 * @typedef {Object} person
 * @property {string} name
 * @property {number} age
 */

在代碼內是無法引用的

/**@type import("./test").person */

我覺得都已經到了抽象對象多處復用的地步了,為什么不直接在model層下新建對象呢

估計vscode也是基于此考慮的

另外對象如果是通過計算得來的,vscode 代碼提示功能也無法識別

如下代碼是不能針對對象屬性進行提示的

我們在編寫代碼中盡量避免這種寫法

const func = () => {
 return ["a", "b", "c"].reduce((pre, cur) => {
 pre[cur] = "hello " + cur
 return pre
 }, {})
}

let obj = func()

Advanced

如果我們想在代碼中對事件定義添加提示怎么辦呢?
比如我注冊了一個事件

test.on("handleInputClicked", () => {})

很遺憾,目前在jsdoc上還做不到

可喜的是,在最新發布的ts4.1.beta上增加了對類型模板字符串的支持

基于此,我們甚至可以實現對 vuex 的支持

不用typsescript如何使用類型增強功能

具體的文檔參見TypeScript 4.1 類型模板字符串實現 Vuex 的 store.commit 和 store.dispatch 類型判斷

By小云菜:http://www.cnblogs.com/phillyx/

github:http://github.com/phillyx

總結

到此這篇關于不用typsescript如何使用類型增強功能的文章就介紹到這了,更多相關typsescript類型增強功能內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/phillyx/p/14481516.html

延伸 · 閱讀

精彩推薦
  • js教程js正則表達式簡單校驗方法

    js正則表達式簡單校驗方法

    在本篇文章里小編給大家整理了一篇關于js正則表達式簡單校驗方法,有需要的朋友們可以參考下。...

    小妮淺淺11272021-12-24
  • js教程基于JavaScript實現隨機點名器

    基于JavaScript實現隨機點名器

    這篇文章主要介紹了基于JavaScript實現隨機點名器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    不是七七子11272022-01-24
  • js教程mustache.js實現首頁元件動態渲染的示例代碼

    mustache.js實現首頁元件動態渲染的示例代碼

    這篇文章主要介紹了mustache.js實現首頁元件動態渲染的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可...

    code2roc4262021-12-21
  • js教程Vant+postcss-pxtorem 實現瀏覽器適配功能

    Vant+postcss-pxtorem 實現瀏覽器適配功能

    這篇文章主要介紹了Vant+postcss-pxtorem 實現瀏覽器適配,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    Heroin、9512022-01-17
  • js教程js canvas實現五子棋小游戲

    js canvas實現五子棋小游戲

    這篇文章主要為大家詳細介紹了js canvas實現五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    魚-貓3892022-01-06
  • js教程使用JS實現鼠標放上圖片進行放大離開實現縮小功能

    使用JS實現鼠標放上圖片進行放大離開實現縮小功能

    這篇文章主要介紹了使用JS實現鼠標放上圖片進行放大離開實現縮小功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借...

    bug開發工程師.4502022-01-10
  • js教程javascript實現簡單頁面倒計時

    javascript實現簡單頁面倒計時

    這篇文章主要為大家詳細介紹了javascript實現簡單頁面倒計時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    潛力股wjk11952022-01-25
  • js教程原生JavaScript實現購物車

    原生JavaScript實現購物車

    這篇文章主要為大家詳細介紹了原生JavaScript實現購物車,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊4432021-12-29
主站蜘蛛池模板: 亚洲精品www久久久久久久软件 | 国产福利资源 | 国产高清在线精品一区二区三区 | 午夜视频在线网站 | 欧美成人三级伦在线观看 | 精品一区二区三区高清免费不卡 | 免费全看男女拍拍拍的视频 | 午夜宅男在线观看 | 双龙高h | 欧美人鲁交大全 | 四虎精品成人免费影视 | 日本国产一区二区三区 | 亚洲AV精品无码喷水直播间 | 99久久香蕉国产线看观香 | 海角社区在线登录 | 牛牛影院成人免费网页 | 青青久在线视频免费观看 | 亚洲网站在线播放 | 电车痴汉(han) | 精品久久久久中文字幕日本 | 天天草b| 日韩国产成人精品视频 | 亚洲va国产日韩欧美精品色婷婷 | 美女认你摸 | 国产一区二区三区丶四区 | 深夜在线观看 | 奇米色7777 | 久99视频精品免费观看福利 | 青草视频在线观看视频 | 日韩一区三区 | 亚1洲二区三区四区免费 | 深夜在线网址 | 91精品国产91久久久久久 | 波多野结衣中文丝袜字幕 | 双性人bbww欧美双性 | 99在线免费播放 | 好逼天天有 | 99re热精品这里精品 | 午夜影院费试看黄 | uoco福利姬| 2022av小四郎的最新地址 |