TypeScript 學(xué)習(xí)筆記 之 枚舉與類型推斷

枚舉

  1. 默認(rèn)枚舉屬性的值為整型,且從0開始自動遞增, 如下:
enum Direction{
  Up,Down,Left,Right,
}
  1. 也可以指定值。如指定 Up = 1 ,以便枚舉從1 開始。

  2. 也枚舉值也支持字符串類型:

enum Direction{
 Up = "UP",Down = "DOWN",Left="LEFT",Right="RIGHT",
  1. 由于 JS 類型的靈活性也支持混合類型的枚舉成員,但是一定不推薦這樣做。

  2. 枚舉不僅支持常量值也支持編譯期可計算的值。
    如:

  1. 引用了其他的枚舉常量。
    2)括號內(nèi)的枚舉常量表達(dá)式。
  2. 使用了 +,-,~ 一元操作符的枚舉常量值。
  3. 使用了 +,-,*,/,%,<<,>>,&,|,^ 二元操作符的枚舉常量表達(dá) 式。
  1. 某些枚舉成員也可以當(dāng)類型使用,示例如下:
enum ShapeKind{
  Circle,
  Square,
}
interface Circle{
  kind: ShapeKind.Circle;
  radius:number;
}
interface Square{
  kind: ShapeKind.Square;
  sideLength: number;
}
  1. 枚舉成員也可以當(dāng)對象使用,因為它在運行期的確是有對應(yīng)存在的。

  2. 對于數(shù)值類型的枚舉,以枚舉成員作為屬性訪問枚舉類可以獲得對應(yīng)的枚舉成員的屬性名。

  3. const 枚舉。聲明為 const 的枚舉只存在于編譯期,生成的代碼中將刪除。

  4. Ambient 枚舉。用于描述在其他地方已經(jīng)存在的枚舉類型。

declare enum Enum{
  A = 1,
  B,
  C = 2
}

類型推斷

  1. 基本推斷 let x = 3; 意味著 let x:number = 3;

  2. 最佳公共類型推斷對于字面量包含多個值時(比如數(shù)組),自動推斷的類型有可能是他們的共同的父類型,或者一個聯(lián)合類型。

  3. 上下文類型,例如下面的代碼,可以推斷出 moveEvent 沒有 button 屬性。

window.onmousedown = function(mouseEvent){
  console.log(mouseEvent.button); // <- Error
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,197評論 1 10
  • 1、范型范型所解決的問題 函數(shù)、方法、類型:類,結(jié)構(gòu)體,枚舉,元組類型,協(xié)議參數(shù),返回值,成員函數(shù)參數(shù),成員屬性類...
    我是小胡胡123閱讀 943評論 0 1
  • 常量與變量使用let來聲明常量,使用var來聲明變量。聲明的同時賦值的話,編譯器會自動推斷類型。值永遠(yuǎn)不會被隱式轉(zhuǎn)...
    莫_名閱讀 536評論 0 1
  • 基礎(chǔ)部分(The Basics) 當(dāng)推斷浮點數(shù)的類型時,Swift 總是會選擇Double而不是Float。 結(jié)合...
    gamper閱讀 1,496評論 0 7
  • 同步,異步:同步是指:當(dāng)一個 block 被添加到 queue 時,會阻塞當(dāng)前運行的線程,直到 block 中的內(nèi)...
    小梁同學(xué)閱讀 395評論 0 1

友情鏈接更多精彩內(nèi)容