亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

TypeScript 初識 - 枚舉

molyzzx / 1468人閱讀

摘要:當滿足以下條件時,枚舉成員被當作是常數(shù)不具有初始化函數(shù)并且之前的枚舉成員是常數(shù)。在這種情況下,當前枚舉成員的值為上一個枚舉成員的值加。但第一個枚舉元素是個例外。枚舉成員使用常數(shù)枚舉表達式初始化。

數(shù)字類型枚舉

常規(guī)枚舉的值都是數(shù)字類型,因此被稱為數(shù)字類型枚舉:

enum Color {
    Red,
    Blue,
    Green
}
console.log(Color.Red);
// 0
console.log(Color[0]);
// Red
console.log(Color[Color.Red]);
// Red, Color.Red = 0
改變與數(shù)字枚舉關聯(lián)的數(shù)字

默認情況下,第一個枚舉值是 0,后續(xù)的值會遞增。

可以通過賦值的方法修改枚舉關聯(lián)的數(shù)字,后續(xù)的值會遞增,但不會修改之前的值:

enum Color {
    Red, // 0
    Blue = 2, // 2
    Green // 3
}

手動賦值后,出現(xiàn)前面的值被后面的值覆蓋了,但是 TypeScript 不會進行報錯:

enum Color {
    Red = 1, // 1
    Blue = 0, // 0
    Green // 1
}
console.log(Color["Red"] === 1); // true
console.log(Color["Green"] === 1); // true
console.log(Color[1] === "Red"); // false
console.log(Color[1] === "Green"); // true
字符串枚舉

枚舉的值還可以設置為字符串,當其中一個值賦值為字符串后,后續(xù)的值必須要賦值:

enum Color {
    Red, // 0
    Blue = "Blue", // Blue
    Green = "Green" // Green
}
常量枚舉

常量枚舉可以提升些許的性能,在枚舉值不會變化的情況下,最好都使用 const 進行聲明:

const enum Color {
    Red,
    Blue,
    Green
}
const red = Color.Red;
// 編譯成 const red = 0 /* Red */;

常量枚舉與普通枚舉的區(qū)別是,它會在編譯階段被刪除,并且不能包含計算成員。

const enum Color {
    Red,
    Blue,
    Green
}
const red = Color.Red;
// 編譯成
// var Color;
// (function (Color) {
//     Color[Color["Red"] = 0] = "Red";
//     Color[Color["Blue"] = 1] = "Blue";
//     Color[Color["Green"] = 2] = "Green";
// })(Color || (Color = {}));
// const red = Color.Red;
計算所得項

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

前面的例子使用的都是常數(shù)項,計算所得項其實就是通過計算才會得到最后的項:

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

計算所得項后面的值都需要進行手動賦值,否則會因為無法獲得初始值而報錯。

當滿足以下條件時,枚舉成員被當作是常數(shù):

不具有初始化函數(shù)并且之前的枚舉成員是常數(shù)。在這種情況下,當前枚舉成員的值為上一個枚舉成員的值加 1。但第一個枚舉元素是個例外。如果它沒有初始化方法,那么它的初始值為 0。

枚舉成員使用常數(shù)枚舉表達式初始化。常數(shù)枚舉表達式是 TypeScript 表達式的子集,它可以在編譯階段求值。當一個表達式滿足下面條件之一時,它就是一個常數(shù)枚舉表達式:

數(shù)字字面量

引用之前定義的常數(shù)枚舉成員(可以是在不同的枚舉類型中定義的)如果這個成員是在同一個枚舉類型中定義的,可以使用非限定名來引用
帶括號的常數(shù)枚舉表達式

+, -, ~ 一元運算符應用于常數(shù)枚舉表達式

+, -, *, /, %, <<, >>, >>>, &, |, ^ 二元運算符,常數(shù)枚舉表達式做為其一個操作對象。若常數(shù)枚舉表達式求值后為 NaN 或 Infinity,則會在編譯階段報錯

所有其它情況的枚舉成員被當作是需要計算得出的值。

外部枚舉

外部枚舉是使用 declare enum 定義的枚舉類型:

declare enum Directions {
    Up,
    Down,
    Left,
    Right
}
const directions = [
    Directions.Up,
    Directions.Down,
    Directions.Left,
    Directions.Right
];

// 編譯結果
const directions = [
    Directions.Up,
    Directions.Down,
    Directions.Left,
    Directions.Right
];

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

外部枚舉和聲明語句一樣,常出現(xiàn)在聲明文件中。同時使用 declareconst 是可以的:

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

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

// 編譯結果
let directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/106755.html

相關文章

  • TypeScript 初識 - 變量

    摘要:通常會定義為函數(shù)的返回值一個類型的變量是沒有生命用處的,因為類型的變量只能賦值為。和有一些區(qū)別的,函數(shù)沒有返回值時返回類型為的方法,即使沒有寫明語句,也會在函數(shù)執(zhí)行完的時候,隱式地返回一個類型。中新增加的變量聲明方式。 類型注解 類型注解使用 :TypeAnnotation 語法。類型聲明空間中可用的任何內(nèi)容都可以用作類型注解。 const num: number = 123; fun...

    dinfer 評論0 收藏0
  • TypeScript 初識

    摘要:當你陷在一個中大型項目中時應用日趨成為常態(tài),沒有類型約束類型推斷,總有種牽一發(fā)而動全身的危機和束縛??傮w而言,這些付出相對于代碼的健壯性和可維護性,都是值得的。目前主流的都為的開發(fā)提供了良好的支持,比如和。參考資料中文文檔 文章博客地址:http://pinggod.com/2016/Typescript/ TypeScript 是 JavaScript 的超集,為 JavaScrip...

    iliyaku 評論0 收藏0
  • TypeScript 初識 - 內(nèi)置對象

    摘要:自帶的內(nèi)置對象都可以直接在中當作定義好的類型。的內(nèi)置對象標準提供了常用的內(nèi)置對象等。在不需要額外引入就可以直接使用這些內(nèi)置對象用寫不是內(nèi)置對象的一部分,想要寫時提示,需要引入第三方聲明文件 JavaScript 自帶的內(nèi)置對象都可以直接在 TypeScript 中當作定義好的類型。 TypeScript 核心庫的定義文件 TypeScript 核心庫的定義文件定義了所有瀏覽器環(huán)境需要用...

    lordharrd 評論0 收藏0
  • TypeScript 初識 - 基礎

    摘要:安裝通過命令進行安裝創(chuàng)建文件文件名以擴展名結尾編譯通過命令行進行編譯通過運行任務的方式進行編譯下使用顯示運行任務,選擇構建進行編譯。 安裝 通過 npm 命令進行安裝: $ npm i -g typescript 創(chuàng)建 ts 文件 Typescript 文件名以 ts 擴展名結尾: function hello(value: string) { console.log(`hel...

    CODING 評論0 收藏0
  • TypeScript 初識 - 函數(shù)

    摘要:函數(shù)類型函數(shù)返回值類型我們可以給每個參數(shù)添加類型之后再為函數(shù)本身添加返回值類型。能夠根據(jù)返回語句自動推斷出返回值類型,所以通??梢允÷运涿瘮?shù)完整函數(shù)類型完整的函數(shù)類型包含兩部分參數(shù)類型和返回值類型。 函數(shù)是 JavaScript 的第一等公民,函數(shù)在 JavaScript 中可以實現(xiàn)抽象層、模擬類、信息隱藏和模塊等等。TypeScript 在一定基礎上擴展了函數(shù)的功能。 函數(shù)類型 ...

    ARGUS 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<