讚美 void, ECMAScript 秒變靜態型別語言

DJ不語發表於2018-06-02

ECMAScript 的動態型別特性既給使用者提供了方便, 其方便性受到喜愛, 同時不支援靜態型別也成為最大的詬病. 今天我說有辦法

使用標準 ECMAScript 語法實現靜態型別描述


你信麼? 在看下文之前, 你靜靜的思考 30 分鐘, 這種方法存在麼?

為了讓你多思考一會兒, 我得嘮叨幾句.

這個方法是我在開發 postdoc 後置文件規範 過程中想到的.

void 掌管靜態型別的一切, 得到你的讚美, 靜態型別就會出現

讚美 void

讚美 void

讚美 void


let
    v = void(String)||'',         // v 型別為 String, 值為 ''
    o = void([String,Number])||0, // o 型別允許為 String,Number, 值為 0
    i = void(Object),             // i 型別為 Object, 值為 undefined
    d = void [[String]];          // d 型別為 String 陣列, 值為 undefined

function fn() {
    void String; // fn 返回值為 String 型別
}

class PureStructure {                // 描述純結構體, 只有欄位沒有方法
  constructor() {
    void {
      name: void [!'',String],       // 字串型別, 且必須有值
      age: void([!0, Number]) || 0,  // 數值型別, 必須有值, 預設值為 0
      email: void String             // 字串型別, 可以省略
    };
  }
}複製程式碼

我向 T39 提交了一個提案: proposal-static-type-constraints-features

這個提案能否被接受是另外的事情, T39 或許有更多的考慮.

重要的是該方法是無副作用的, 即便無法進入標準, 我們也可以大膽的使用.

讚美 void

讚美 void

讚美 void


相關文章