激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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
主站蜘蛛池模板: 亚洲精品成人在线视频 | 玩偶姐姐 在线观看 | 在线免费小视频 | 在线a亚洲视频播放在线观看 | 国产免费观看a大片的网站 欧美成人一级 | 亚洲小视频在线观看,com | 欧美三级欧美成人高清www | 久久美女色视频 | 国产精品久久久久久婷婷天堂 | 久久久久久久久亚洲精品 | 久久99国产综合精品 | 日韩视频一区在线 | 国产在线1区 | 午夜神马电影网 | 免费久久精品 | 免费观看视频网站 | 精品一区二区免费视频视频 | 精国品产一区二区三区有限公司 | 在线亚洲综合 | 国产成人羞羞视频在线 | 特大黑人videos与另类娇小 | 综合欧美一区二区三区 | 成人三级视频在线观看 | 国产精品久久久久久模特 | 日本免费不卡一区二区 | 请播放一级毛片 | 免费一级电影 | 久久国产精品99久久人人澡 | 精品亚洲成a人在线观看 | 久久91亚洲人成电影网站 | 成年性羞羞视频免费观看 | 日韩一级网站 | 国产精品欧美久久久久一区二区 | 日本在线观看一区二区 | 日韩精品中文字幕在线播放 | 青草av.久久免费一区 | 中文字幕观看 | 免费观看又色又爽又黄的崩锅 | 性片网站 | 亚洲性生活免费视频 | 久久精品探花 |