在 TypeScript 中有個比較有意思的類型叫作枚舉,使用枚舉類型能夠爲一組數值賦予友好的名字。最多見的就是好比說週一到週日,就能夠用枚舉表示。code
官網用了一個小例子說明:對象
enum Color {Red, Green, Blue} let c: Color = Color.Green;
這個轉化成 js 就是ip
var Color; (function (Color) { Color[Color["Red"] = 0] = "Red"; Color[Color["Green"] = 1] = "Green"; Color[Color["Blue"] = 2] = "Blue"; })(Color || (Color = {})); var c = Color.Green; // Color = {0: "Red", 1: "Green", 2: "Blue", Red: 0, Green: 1, Blue: 2}
仔細看中間的代碼會發現有個 Color[Color["Red"] = 0] = "Red"; 的表示方法,這個是什麼鬼?io
咱們知道對象在屬性是 String 類型的,因此我猜想也就是使用了 String() 對中間的表達式進行了類型轉化,咱們在控制檯能夠簡單的輸入 String(Color["Red"] = 0),返回的結果爲0。function
其實這個就是基本的 js 運算規則,若是你理解下面的代碼,你也就理解了爲何返回 0 了。方法
var a = b = 0 // a=0 // b=0
我想這個大多數人都能看懂,不過若是咱們變更一下。co
'use strict' var a = b =0
那麼這個就會報錯,由於 b 沒有使用 var 進行聲明,這個就是 JS 運算規則中叫作「右結合」,上述代碼正確的理解方式就是:let
var a = ( b = 0 );
哈哈,我想你應該知道了,因此 String(Color["Red"] = 0) 的正確理解方式就是枚舉
var tmp = Color["red"] = 0; String(tmp);