Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

CoffeeScriptで定数をグローバル汚染最小限かつ簡単に渡す

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください)

exports.BLACK = 0
exports.WHITE = 1
exports.YELLOW = 2
exports.RED = 3
exports.BLUE = 4

定数はよく使いますよね。そして徐々にグローバル汚染激しくなりますよね。しかもファイルまたいでつかいまくりですよね。そしてこうしたくなりますよね。

exports.COLOR =
    BLACK: 0
    WHITE: 1
    YELLOW: 2
    RED: 3
    BLUE: 4

でも、使う先でいちいち面倒くさがりつつ

BLACK = COLOR.BLACK
WHILTE = COLOR.WHITE
...

と展開するのはクールじゃないです。全然クールじゃないです。 CoffeeScriptの利点の一つ、分割代入フル活用すればこれをクール&スマートにかけます。

{BLACK, WHITE, YELLOW, RED, BLUE} = COLOR

これだけですが、これができるだけでもCoffeeScriptには十分に利用価値があると思いました。

コメントもらったので追記

ちなみにES2015ではこれと同等のことがimportを使うことでできます(コメントで教えてもらいました)。

import { returnPrivateVar, publicVar } from 'mymodule';