日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

AS Const 五種使用技巧,你知道多少?

來源: 責編: 時間:2024-03-20 08:51:31 189觀看
導讀在 TypeScript 中,as const 是一種類型斷言,它將變量標記為 “常量”。使用 as const 可以告訴 TypeScript 編譯器,某個對象的所有屬性都是只讀的,并且它們的類型是字面量類型,而不是更通用的類型,比如 string 或 number 類

p1a28資訊網(wǎng)——每日最新資訊28at.com

在 TypeScript 中,as const 是一種類型斷言,它將變量標記為 “常量”。使用 as const 可以告訴 TypeScript 編譯器,某個對象的所有屬性都是只讀的,并且它們的類型是字面量類型,而不是更通用的類型,比如 string 或 number 類型。接下來,我將介紹 TypeScript 中 as const 類型斷言的 5 個使用技巧。p1a28資訊網(wǎng)——每日最新資訊28at.com

1.確保對象的屬性不可變

在下面代碼中,雖然你使用 const 關鍵字來定義 DEFAULT_SERVER_CONFIG 常量。但你仍然可以修改該對象的屬性。p1a28資訊網(wǎng)——每日最新資訊28at.com

const DEFAULT_SERVER_CONFIG = {    host: "localhost",    port: 8080}DEFAULT_SERVER_CONFIG.port = 9090console.log(`Server Host: ${DEFAULT_SERVER_CONFIG.port}`)// "Server Host: 9090"

如果你希望該對象的屬性,是只讀的不允許修改,那么你可以使用 as const 類型斷言。p1a28資訊網(wǎng)——每日最新資訊28at.com

const DEFAULT_SERVER_CONFIG = {    host: "localhost",    port: 8080} as const

之后,當你嘗試修改 port 屬性時,TypeScript 編譯器就會提示以下錯誤信息:p1a28資訊網(wǎng)——每日最新資訊28at.com

p1a28資訊網(wǎng)——每日最新資訊28at.com

as const 類型斷言,除了支持普通對象之外,還支持嵌套對象:p1a28資訊網(wǎng)——每日最新資訊28at.com

const DEFAULT_CONFIG = {    server: {        host: "localhost",        port: 8080    },    database: {        user: "root",        password: "root"    }} as const

p1a28資訊網(wǎng)——每日最新資訊28at.com

2.確保數(shù)組或元組不可變

在工作中,數(shù)組是一種常見的數(shù)組結(jié)構(gòu)。使用 as const 類型斷言,我們可以讓數(shù)組變成只讀。p1a28資訊網(wǎng)——每日最新資訊28at.com

const RGB_COLORS = ["red", "green", "blue"] as const

使用了 as const 類型斷言之后,RGB_COLORS 常量的類型被推斷為 readonly ["red", "green", "blue"] 類型。之后,當你往 RGB_COLORS 數(shù)組添加新的顏色時,TypeScript 編譯器就會提示以下錯誤信息:p1a28資訊網(wǎng)——每日最新資訊28at.com

p1a28資訊網(wǎng)——每日最新資訊28at.com

除了數(shù)組之外,你也可以在元組上使用 as const 類型斷言:p1a28資訊網(wǎng)——每日最新資訊28at.com

const person = ['kakuqo', 30, true] as const;person[0] = 'semlinker' // Error// Cannot assign to '0' because it is a read-only property.(2540)

3.常量枚舉的替代方案

在下面代碼中,我們使用 enum 關鍵字定義了 Colors 枚舉類型。p1a28資訊網(wǎng)——每日最新資訊28at.com

const enum Colors {  Red = 'RED',  Green = 'GREEN',  Blue = 'BLUE',}let color: Colors = Colors.Red; // Okcolor = Colors.Green // Ok

除了使用枚舉類型之外,利用 as const 類型斷言,你也可以實現(xiàn)類似的功能:p1a28資訊網(wǎng)——每日最新資訊28at.com

const Colors = {  Red: 'RED',  Green: 'GREEN',  Blue: 'BLUE',} as const;type ColorKeys = keyof typeof Colors;type ColorValues = typeof Colors[ColorKeys]let color: ColorValues = 'RED'; // Okcolor = 'GREEN'; // Ok

4.讓類型推斷更精準

在下面代碼中,red 變量的類型被推斷為 string 類型。p1a28資訊網(wǎng)——每日最新資訊28at.com

const RGB_COLORS = ["red", "green", "blue"];let red = RGB_COLORS[0] // string

在某些場合中,你可能希望獲取更精確的類型,比如對應的字面量類型,這時你就可以使用 as const 類型斷言:p1a28資訊網(wǎng)——每日最新資訊28at.com

const RGB_COLORS = ["red", "green", "blue"] as const;let red = RGB_COLORS[0] // "red"

5.賦值時縮窄變量的類型

在下面代碼中,使用 const 關鍵字定義的常量,它的類型會被推斷為更精確的類型。p1a28資訊網(wǎng)——每日最新資訊28at.com

let color1 = "Red" // let color1: stringconst color2 = "Red" // const color2: "Red"

利用 as const 類型斷言,我們也可以讓 let 關鍵字定義的變量對應的類型更精準:p1a28資訊網(wǎng)——每日最新資訊28at.com

let color3 = "Red" as const // let color3: "Red"

當然,在實際工作中,如果明確定義常量,那么推薦直接使用 const 關鍵字來定義。p1a28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-77984-0.htmlAS Const 五種使用技巧,你知道多少?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何編寫高性能的Java代碼

下一篇: 天貓超市 4 月 1 日起下線現(xiàn)有會員服務,后續(xù)將推出新的權(quán)益體系

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統(tǒng)將于今天下午正式登場,官方在發(fā)布會之前也已經(jīng)正式給出了可升級的機型產(chǎn)品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質(zhì)感拉滿

    終于,在經(jīng)過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設計還是延續(xù)了一加11的方案,只是細節(jié)上有了調(diào)整,例如新加入了鈦空灰
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網(wǎng)口+USB 3.0這次全都有

    2021年11月的時候,中興先后發(fā)布了兩款路由器產(chǎn)品,中興AX5400和中興AX5400 Pro,從產(chǎn)品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產(chǎn)品可以說是完全沒一點關系
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關代
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經(jīng)作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 華為開發(fā)者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區(qū)

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發(fā)者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發(fā)布最新一代鴻蒙 H
  • 華為Mate60標準版細節(jié)曝光:經(jīng)典星環(huán)相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
Top 主站蜘蛛池模板: 柳河县| 连州市| 永修县| 泰安市| 遂平县| 金乡县| 灯塔市| 六安市| 云林县| 富裕县| 珠海市| 九龙坡区| 乐亭县| 金塔县| 顺义区| 宜阳县| 砚山县| 龙口市| 乳源| 新源县| 泉州市| 满洲里市| 大庆市| 铜鼓县| 英山县| 沾化县| 潮州市| 玛沁县| 牟定县| 彩票| 宣城市| 甘洛县| 娱乐| 沁水县| 沐川县| 瑞安市| 乌拉特前旗| 遂昌县| 古浪县| 太原市| 大兴区|