ECMAScript4のpackageとnamespace

のつづきは軽く

  • obj wrap Type: = obj is like Type ? obj : throw new TypeError() みたいな感じの式(throwは文なので感じだけ)
    • これはlikeにとってのcast相当
      • Gradual Typeだと、(型宣言がついてない)トップ型変数は(型宣言つきの)具体型変数にconsistencyであり、そのかわりに、意味論上castになって具体型付パートとして分離される。同じように、意味論的にlike型の変数もconsistencyである場合(top型と違ってconsistencyルールではじく場合を定義できる)、そこでwrapが意味的に入ることで同様の役割を持つ、んだと思う、たぶん
  • constプロパティ: {const prop: value, ...}というようにオブジェクトを作れる。このpropは書き換え不能(代入左辺式にできない)
  • namespace: C++のそれに近い。this.sp::databaseのように、プロパティ名でも使用可能。namespace単体では、(privateのような)アクセス制御をするものにはなってない。
  • package, class/interface, public/private: ActionScriptではおなじみ

ES4にはpackageとnamespaceの両方があるらしい。