ES6だとクラス直下の変数定義ができない(気がする)
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
を使ったり、初期値を持った変数であればコンストラクタの中で定義するようです。
そういえばActionScriptやHaxeでもそんなことできたなー。
言われればなんてことないんですが、やっぱりちょっと癖がある気がしました。まる。