私のコレクションをラップするモジュールをビルドしようとする試み、私のようなもの持ってES2015の初期化がない
失敗作品:私は正しいフラグをブーブレ(dangerousForOfでモジュールをcomplie後
// topic: chess gaming
// file: src/core/Refs.js
const COLS = 'abcdefgh'.split('')
const ROWS = '12345678'.split('')
const ALL = new Map()
class Ref {
constructor (col, row) {
this.col = col
this.row = row
this.key = String(col + row)
}
// translate to ref to obtain another
// or null, if off-board
//
// ref.translate(0, 0) === ref (ok ?)
//
translate (dcol, drow) {
// compute something for dcol and drow
// ...
return ALL.get(COLS[colIdx] + ROWS[rowIdx])
}
}
// the code which seems to not work propertly
for(let c of COLS) {
for(let r of ROWS) {
ALL.set(String(c + r), new Ref(c, r))
}
}
export default {
COLS, ROWS, ALL,
has (ref) {
return ALL.has(ref)
},
get (ref) {
return ALL.get(ref)
},
// trying to grant/warrant "immutability"
// for the "ALL" collection inside the module
keys() {
return [...ALL.keys()]
}
}
を、。 。)とobjectAssign
その後私はカルマ+ジャスミン、最初のテストでテスト:
it ('should be 64-length array', function() {
expect (Refs.keys().length).toEqual(64)
})
は 'expects 1 to 64'となり、Refs.ALLのログに空のMapが表示されているようです。 althougth Refs.COLSとRefs.ROWSが適切に初期化されています。
何が起こっているのか、それを修正する方法はありますか?
EDIT:
@Bergi:もちろん、Refs.ALLは不変性を破るさらすこと、それはデバッグ目的のためにかなりだった
私はテストバンドル出力をキャプチャする方法を正確にわからないんだけど、見てグッ+ロールアップ者協会バンドル、メソッドキー()行:
return [].concat(ALL.keys())
:
return [...ALL.keys()]
を置き換えました
MapIteratorを含む1要素の配列を生成します。
return Array.from(ALL.keys())
この問題は修正されますが、従来のブラウザでは正しく機能しません。
私は私のレポ上でコードをプッシュしている:https://github.com/hefeust/colorchess-v2
をこのバグを修正するのに役立つ可能性があり期待して:正しいObject.assignとのバンドルを持つように、ソースコードでスプレッド(...)演算子を変換する方法ポリフィル?
値を設定するループに 'String(c + r)'の値を記録してみますか? – Ryan
* buble *でコンパイルしますか? –
c + rは私に "a1"〜 "h8"を与えます。 Bubléと一緒に蒸す、そうです。 Karmaとrollup-plugin-buble(バベルではない)を使用して、Bubléの方が速いので、ES2015 + stage-2を古典的なブラウザJSに変換するには – Hefeust