Ramda.jsには任意の関数をカリー化する curry()があります。
curried_func = R.curry( (arg) => { some_codes(); } )
といった書式でカリー化された関数が得られます。
ただし、ES6のクラス内ではメソッドしか定義できないという制約と干渉して、この書式を採れません。
constructor()内でcurry()
することも可能ですが、関数定義と実際に利用する関数が分離するためコードが錯綜します。
クラス内のプロパティ定義は、ドラフト段階のESには機能があります。
Babelの場合、 transform-class-propertiesというプラグインでクラスプロパティが利用可能になり、このプラグインは Stage 2プリセットに含まれています。
babel-preset-stage-2を設定すれば、クラス直下に変数を定義できます。
Babel Stage-2の使い方
プリセットのコードをインストールします。
$ npm install babel-preset-stage-2 --save-dev
webpack.config.jsの該当ブロックは以下のような設定です。
module: {
rules: [{
test: /\.js$/,
loader: 'babel-loader',
options: {
presets: ['stage-2'],
},
}]
}
この設定により、
curried_func = R.curry( (arg) => { some_codes(); } )
の形式で記述でき、this.curried_func(arg)
で呼び出せます。
⁋ 2018/06/26↻ 2024/12/18
中馬崇尋
Chuma Takahiro
Chuma Takahiro