成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 VSCode 中像寫 TypeScript 一樣寫 JavaScript

開發 前端
VSCode 會推斷一個變量是什么類型,并在你輸入內容的時候,提供對應的 API 屬性或方法補全。

大家好,我是前端西瓜哥。我們在 VSCode 編輯器中編寫 js 代碼,是會提供類型提示的。

VSCode 會推斷一個變量是什么類型,并在你輸入內容的時候,提供對應的 API 屬性或方法補全。

如下圖,在 js 文件中,arr 變量被判斷為一個 number[] 類型,所以我們鍵入 arr. 時,會提供一個數組可以訪問到的屬性。

圖片

JavaScript Language Service

上面的能力來自 JavaScript Language Service,由 TypeScript 團隊進行開發維護。

類型的推導并衍生出的智能提示,是基于 TypeScript 的。

TypeScript 可以不顯式寫類型標注,會做自動類型推導的。JavaScript 正是利用這一點能夠一定限度地得到類型。

雖然智能,但不完全智能?;?TS 的智能推斷不能識別運行時變量發生的類型變化。

看下面的例子,相比 TypeScript,JavaScript 是不可預測的,即可以改變類型,改了類型后 arr 還是推導為原來的 number[]。

圖片

除此之外,我們還可以基于 JSDoc 來做智能提示。在一個變量的上面加上 JSDoc 格式的注釋即可。

格式大致這個樣子:

/** @標簽 {類型標注} */

下圖中我們給一個 rect 變量聲明了對象結構。可以看到,出現了類型聲明中屬性的智能提示。

圖片

然后是函數參數的注釋聲明:

圖片

?需要注意的是,JavaScript Language Service 只是提供智能提示,并不會做真正的類型檢查。所以假設你給一個變量聲明標注為數值類型,結果賦值為對象是不會提示報錯的。

如果你想要做類型檢查(編輯器層面),可以用 @ts-check。

@ts-check

然后是 @ts-check,讓一個 js 文件被當作一個 ts 文件來處理。

在文件的開頭添加 //@ts-check 即可開啟。

看,現在我們不能給一個初始化時為 number[] 賦予其他不兼容的類型值了。

/Users/watermelon/Library/Application Support/typora-user-images/image-20230127235510088.png

不過這只是編輯器層面的提示,它依舊是正確的 js 寫法,是可以正常運行的。

然后 rect 變量也因為聲明時只有 x,缺少其他屬性而報錯了:

圖片

實際應用

我個人來說,基本都是寫 TS 了,但偶爾要寫一些項目外的簡單腳本或許寫點小 demo。如果用 TS,太重了,TS 配置也繁瑣,這時候直接用 js 會更簡單些。

雖然 VSCode 能支持一些簡單的類型推導,但并不是總是智能,比如聲明一個函數,傳入的參數類型是無法推導的,這時候通過 JSDoc 來聲明類型,就能提供不錯的類型提示,通過智能提示減少寫錯屬性名的低級錯誤。

另外就是打包工具的配置文件通常是 js,要換成 ts 會非常麻煩,用 VSCode 的智能推導是不錯的選擇。

下面是 rollup 工具的配置文件寫法。

圖片

@ts-check 和 @type 的組合拳,效果挺不錯的。

結尾

非常好用,建議都試試,十分酸爽。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2023-02-03 16:03:17

TypescriptJavaScript

2023-05-23 13:59:41

RustPython程序

2022-10-12 08:05:04

PlantUML代碼運行環境

2013-01-29 10:07:13

建筑設計師寫程序程序員

2023-03-06 09:20:53

扁平化管理代碼

2023-04-05 14:19:07

FlinkRedisNoSQL

2022-01-10 21:00:12

LinuxGNOME截圖工具

2013-12-31 09:19:23

Python調試

2013-12-17 09:02:03

Python調試

2022-12-21 15:56:23

代碼文檔工具

2017-03-15 16:17:20

學習命令計算機

2017-10-17 14:47:02

AndriodGradle依賴

2024-08-29 08:07:59

GoAPI開發

2021-05-20 08:37:32

multiprocesPython線程

2013-08-22 10:17:51

Google大數據業務價值

2015-03-16 12:50:44

2015-02-05 13:27:02

移動開發模塊SDK

2012-06-08 13:47:32

Wndows 8Vista

2011-01-18 10:45:16

喬布斯

2025-01-09 10:32:05

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人天堂网 | 成人在线中文字幕 | 亚洲一区免费视频 | 国产精品日韩欧美一区二区三区 | 国产精品永久免费 | 亚洲日本一区二区 | 啪啪网页 | 日韩视频在线一区二区 | 国产成人免费视频网站高清观看视频 | 成人精品 | 中文字幕一区二区三区四区五区 | 久夜精品 | japanhd成人 | 久久成人精品视频 | 久久最新 | 先锋av资源在线 | 欧美成人一区二免费视频软件 | 国产免费一区二区三区最新6 | 99精品一级欧美片免费播放 | 欧美一区二区三区在线观看视频 | 精品欧美乱码久久久久久 | 国产午夜精品一区二区三区嫩草 | 天天弄 | 成人免费视频在线观看 | 天天综合干 | 欧美男人天堂 | 欧美日韩高清免费 | 男人天堂国产 | 天堂在线中文字幕 | 国产成都精品91一区二区三 | 亚洲免费三区 | 91视频大全 | 91久久精品一区二区三区 | 欧美日韩国产三级 | 91.com在线观看| 成人在线视频网站 | 久久久噜噜噜www成人网 | 欧美在线a | 在线一区二区国产 | 亚洲视频一区二区三区 | 欧美日韩国产精品激情在线播放 |