読者です 読者をやめる 読者になる 読者になる

// Nice cat :3

ゼロ歳児と戦うフロントエンドエンジニア

ES6だとクラス直下の変数定義ができない(気がする)

Javascript

ECMAScriptの流れを汲むActionScriptでは

class Hoge {
  const HOGE_CONST:String = 'hoge_const';
  var hoge:String = 'hoge';
}

こういう書き方ができました。

それならES6でclass構文に対応したよ!とかいってるJavascriptさんだってできるよねって思ったらシンタックスエラー。
仕様書見てもClassBodyに書けるClassElementには[static] MethodDefinitionとしか書いてないので、変数定義はダメそうです。
ECMAScript Language Specification ECMA-262 6th Edition – DRAFT

じゃあどうやって書くかというと、こんな感じのようです。

class Hoge {
  get HOGE_CONST() {
    return 'hoge_const';
  }
  constructor() {
    this.hoge = 'string';
  }
}

getter,setterを使ったり、初期値を持った変数であればコンストラクタの中で定義するようです。
そういえばActionScriptHaxeでもそんなことできたなー。

言われればなんてことないんですが、やっぱりちょっと癖がある気がしました。まる。