国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TypeScript【enum 枚舉】

這篇具有很好參考價值的文章主要介紹了TypeScript【enum 枚舉】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

導(dǎo)語

在 TypeScript 中,新增了很多具有特性的一些數(shù)據(jù)類型處理方法,enum 【枚舉】就是其中,很具有代表性的一種,所以本章節(jié)就來聊聊 在 TypeScript 中如何去運用 enum 【枚舉】。


TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端

枚舉的概念

枚舉(Enum)類型用于取值被限定在一定范圍內(nèi)的場景,比如一周只能有七天,顏色限定為紅綠藍等。

枚舉使用 enum 關(guān)鍵字來定義:

enum DaysDataType {
    Sun,
    Mon,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat
};
console.log(DaysDataType);

默認賦值【自動賦值】

枚舉成員默認值會被賦值為從 0 開始遞增的索引數(shù)字,同時也會對枚舉值到枚舉名進行反向映射

上面輸出打印 枚舉 DaysDataType:

TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端

上面聲明的枚舉,最后被編譯為 JS 后,會呈現(xiàn)以下的樣式。

TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端


手動賦值

我們也可以給枚舉項手動賦值

enum DaysDataType {
    Sun = 7,
    Mon = 14,
    Tue = 21,
    Wed = 54,
    Thu,
    Fri,
    Sat
};
console.log(DaysDataType);

手動賦值后,再次注意看編譯后的內(nèi)容:
TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端

console.log(DaysDataType["Sun"] == 7); //true
console.log(DaysDataType["Mon"] == 14);//true
console.log(DaysDataType["Tue"] == 21);//true
console.log(DaysDataType["Wed"] == 54);//true
console.log(DaysDataType["Thu"] == 55);//true
console.log(DaysDataType["Fri"] == 56);//true
console.log(DaysDataType["Sat"] == 57);//true

上面案例可以看出,未手動賦值的枚舉項會接著上一個枚舉項的值進行遞增。

注意:如果手動賦值的為 number 類型的值,下一位如果沒有手動賦值則會在上一次的基礎(chǔ)上遞增。并且所賦值的數(shù)字可以被用做數(shù)組的下標索引的方式來讀取數(shù)據(jù),賦值非number類型的不支持通過下標讀取

如:

enum DaysDataType {
    Sun = "789",
    Mon = 4546,
    Tue = "415",
    Wed = "asd",
    Thu = "asdasd",
    Fri = 41,
    Sat = "asddf"
};
console.log(DaysDataType);
console.log(DaysDataType[4546]); //Mon
console.log(DaysDataType[41]); //Fri

截止目前TS 枚舉手動賦值僅支持 numberstring,null,undefined,不支持 Boolean
TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端


值得注意
如果未手動賦值的枚舉項與手動賦值的重復(fù)了,TypeScript 是不會察覺到這一點的,它會進行一個 后來居上的覆蓋處理:

enum DaysDataType {
    Sun = 7,
    Mon = 14,
    Tue = 21,
    Wed = 54,
    Thu = 13,
    Fri,     //14 根據(jù)前枚舉項 遞增,會覆蓋掉前面 Mon 的14。
    Sat  //15
};
console.log(DaysDataType[7] == "Sun"); //true

console.log(DaysDataType[14] == "Mon");        //false  被 Fri  覆蓋掉了,丟失了唯一性。

console.log(DaysDataType[21] == "Tue"); //true
console.log(DaysDataType[54] == "Wed"); //true
console.log(DaysDataType[13] == "Thu"); //true
console.log(DaysDataType[14] == "Fri"); //true    // Fri 覆蓋掉了 Mon
console.log(DaysDataType[15] == "Sat"); //true

TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端

所以使用的時候需要特別注意,盡量避免出現(xiàn) 數(shù)據(jù)覆蓋的情況。

當(dāng)然:手動賦值的枚舉項不僅僅可以不是數(shù)字類型,此時需要使用類型斷言來讓 tsc 無視類型檢查 (編譯出的 js 仍然是可用的)

enum DaysDataType {
    Sun = 7,
    Mon = 14,
    Tue = 21,
    Wed = 54,
    Thu = 13,
    Fri,
    Sat = <any>"張三"  //類型斷言
};

同時,手動賦值的枚舉項也可以為小數(shù)或負數(shù),此時后續(xù)未手動賦值的項的遞增步長仍為 1

enum DaysDataType {
    Sun = 1.5,
    Mon,
    Tue,
    Wed,
    Thu,
    Fri,
    Sat 
};
console.log(DaysDataType);

TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端


枚舉的常數(shù)項和計算所得項

枚舉項有兩種類型:常數(shù)項(constant member)和計算所得項(computed member)

前面我們所舉的例子都是 常數(shù)項,那么 計算所得項又是什么呢?如下案例:

enum Color {Red, Green, Blue = "blue".length};

案例中 Blue 的值是通過 一個字符串的 length 計算而得來的。這種就被稱為計算所得項。

注意
如果緊接在計算所得項后面的是未手動賦值的項,那么它就會因為無法獲得初始值而報錯


常數(shù)枚舉:

常數(shù)枚舉是使用 const enum 定義的枚舉類型

const enum Directions {
    Up,
    Down,
    Left,
    Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]; // let directions = [0 /* Directions.Up */, 1 /* Directions.Down */, 2 /* Directions.Left */, 3 /* Directions.Right */];

常數(shù)枚舉與普通枚舉的區(qū)別是,它會在編譯階段被刪除,并且不能包含計算所得項的枚舉成員。主要作用是在編譯階段進行類型檢查。
TypeScript【enum 枚舉】,TypeScript,typescript,javascript,前端


外部枚舉

外部枚舉(Ambient Enums)是使用 declare enum 定義的枚舉類型。

declare  enum Directions {
    Up,
    Down,
    Left,
    Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];

//let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];

declare 定義的類型只會用于編譯時的檢查,編譯結(jié)果中會被刪除。

同時使用 declare const 也是可以被支持的

declare const enum Directions {
    Up,
    Down,
    Left,
    Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];

編譯后:

var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

總結(jié):

本章節(jié),主要介紹了在 TypeScript 中 如何應(yīng)用 enum 【枚舉】的使用場景,以及使用枚舉的多種定義方式。提供給大家參考學(xué)習(xí)。


???♂? 博主座右銘:向陽而生,我還在路上!
——————————————————————————————
??博主想說:將持續(xù)性為社區(qū)輸出自己的資源,同時也見證自己的進步!
——————————————————————————————
???♂? 如果都看到這了,博主希望留下你的足跡!【??收藏!??點贊!??評論!】
——————————————————————————————文章來源地址http://www.zghlxwxcb.cn/news/detail-626779.html

到了這里,關(guān)于TypeScript【enum 枚舉】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 詳細版易學(xué)版TypeScript - 元組 枚舉

    詳細版易學(xué)版TypeScript - 元組 枚舉

    數(shù)組:合并了相同類型的對象 元組(Tuple):合并了不同類型的對象 1、前端為什么要使用枚舉 去魔數(shù)化:一旦有個數(shù)值改動,不用再全局替換匹配 語義化:可以直觀通過值推導(dǎo)出含義,例如,通過 STATUS.SUCCESS 就可以大概猜出含義 定義一體化:枚舉值和枚舉描述寫在了一起,

    2024年02月03日
    瀏覽(24)
  • TypeScript枚舉:方便的常量定義方式

    在 TypeScript 中,枚舉是一個非常重要的特性,它提供了一種方便的常量定義方式。在本文中,我們將詳細探討 TypeScript 枚舉的用法和優(yōu)勢。 枚舉是指 一組命名的常量 ,這些常量稱為 枚舉成員 。枚舉可以在 TypeScript 中以類似于 C# 和 Java 的方式來定義,它們在 JavaScript 中被編

    2024年02月11日
    瀏覽(17)
  • 4、詳細版易學(xué)版TypeScript - 元組 枚舉

    4、詳細版易學(xué)版TypeScript - 元組 枚舉

    數(shù)組:合并了相同類型的對象 元組(Tuple):合并了不同類型的對象 1、前端為什么要使用枚舉 去魔數(shù)化:一旦有個數(shù)值改動,不用再全局替換匹配 語義化:可以直觀通過值推導(dǎo)出含義,例如,通過 STATUS.SUCCESS 就可以大概猜出含義 定義一體化:枚舉值和枚舉描述寫在了一起,

    2024年02月06日
    瀏覽(25)
  • 服務(wù)端使用ASP.NET Core SignalR與Vue3(TypeScript與JavaScript)前端建立通信(以進度條為例)

    服務(wù)端使用ASP.NET Core SignalR與Vue3(TypeScript與JavaScript)前端建立通信(以進度條為例)

    1. ASP.NET Core ? ? ? ? ? ASP.NET Core 是一個跨平臺、高性能及開源的框架,用于生成基于云且連接互聯(lián)網(wǎng)的新式應(yīng)用程式。 官方文檔:ASP.NET documentation | Microsoft Learn ?2.? ASP.NET Core SignalR ? ? ? ? ASP.NET Core SignalR 是開源庫,用于服務(wù)端與客戶端建立實時通信,可以自動管理連接

    2024年02月06日
    瀏覽(22)
  • 前端2023最全面試題(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)

    答案:JavaScript中的閉包是一種函數(shù),它有權(quán)訪問其詞法環(huán)境的變量和其它函數(shù)。這意味著,即使其包含它的函數(shù)已經(jīng)執(zhí)行完畢,其詞法環(huán)境仍然存在,因此可以訪問其作用域內(nèi)的變量。 答案:回調(diào)函數(shù)是在某個特定事件之后執(zhí)行的函數(shù)。在JavaScript中,通常使用回調(diào)函數(shù)來處

    2024年02月06日
    瀏覽(35)
  • TypeScript與JavaScript

    TypeScript與JavaScript

    博主作品: 《Java項目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分離項目,可以在左邊的分類專欄找到更多項目?!禪niapp項目案例》有幾個有uniapp教程,企業(yè)實戰(zhàn)開發(fā)?!段⒎?wù)實戰(zhàn)》專欄是本人的實戰(zhàn)經(jīng)驗總結(jié),《Spring家族及微服務(wù)系列》專注Spring、SpringMV

    2024年02月05日
    瀏覽(30)
  • 《前端面試題》- TypeScript - TypeScript的優(yōu)/缺點

    簡述TypeScript的優(yōu)/缺點 優(yōu)點 增強了代碼的可讀性和可維護性 包容性,js可以直接改成ts,ts編譯報錯也可以生成js文件,兼容第三方庫,即使不是ts編寫的 社區(qū)活躍,完全支持es6 缺點 增加學(xué)習(xí)成本 增加開發(fā)成本,因為增加了類型定義 需要編譯,類型檢查會增加編譯時長,語

    2024年04月23日
    瀏覽(25)
  • 單例模式——javascript和typescript

    確保某個方法或者類只有一個是咧。而且自行實例子并向整個系統(tǒng)提供這個實例。 某個方法或類只能一個; 必須自行創(chuàng)建這個實例 必須自行向整個系統(tǒng)提供這個實例。

    2024年02月05日
    瀏覽(21)
  • 一文了解JavaScript 與 TypeScript的區(qū)別

    一文了解JavaScript 與 TypeScript的區(qū)別

    TypeScript 和 JavaScript 是兩種互補的技術(shù),共同推動前端和后端開發(fā)。在本文中,我們將帶您快速了解JavaScript 與 TypeScript的區(qū)別。 ? 一、TypeScript 和 JavaScript 之間的區(qū)別 JavaScript 和 TypeScript 看起來非常相似,但有一個重要的區(qū)別。 JavaScript 和 TypeScript 之間的主要區(qū)別在于 JavaS

    2024年02月14日
    瀏覽(23)
  • TypeScript:為什么JavaScript需要類型檢查?

    JavaScript是當(dāng)今最為流行的編程語言之一。它是一種高級的、解釋性的編程語言,用于Web應(yīng)用程序的開發(fā)。然而,JavaScript的靈活性也是它的弱點之一。JavaScript中的變量、函數(shù)、類等都是動態(tài)類型,這意味著它們的類型可以在運行時發(fā)生變化。雖然這種靈活性為JavaScript開發(fā)人員

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包