分割代入で ... の後にコンマを書けない
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ ...param のあとにカンマがあると最後に配置しないといけないというエラー
◆ 次の要素があるとみなされるよう
◆ 複数行で書くとき末尾コンマで揃わないのが微妙
◆ 次の要素があるとみなされるよう
◆ 複数行で書くとき末尾コンマで揃わないのが微妙
前回の for-of に引き続いて 今更知った分割代入の仕様です
分割代入はこんな感じで書きます
指定しなかったキーのプロパティをオブジェクトにまとめて受け取るなら
というものです
普段は変数が少ないので 1 行で書いてますが 変数が多かったときに複数行にしました
末尾コンマが書けます
統一感があっていいですよね
この状態で ... を使って残りのプロパティを取得しようとしました
エラーになりました
Uncaught SyntaxError: Rest element must be last element
... で指定する変数は最後に来ないといけないそうです
最後にあるのですが 「,」 が入ると次があるとみなされるのか構文エラーです
見た目が揃っていてきれいなので末尾コンマを書きたいのですがダメそうです
ES2015 からは関数呼び出しでも末尾コンマが書けるようになって 末尾コンマできれいに揃えたいんですけどね
だめな理由が次に要素を配置できないからというものなので 次に要素を配置できる spread の方は問題なくコンマを書けます
こういうことができますからね
関数呼び出しも同じです
末尾カンマを許可した理由は 視覚的に揃っていて美しいからじゃなくて 要素の追加や削除をするときに楽になって diff をとったときの差分もわかりやすくなるという実用的なことからでしょうし仕方ないのかもしれません
に baz を追加するとしたら bar の次でしょうし 最後に固定で他と扱いの違う rest に末尾カンマがなくても 利便性の点では影響ありません
それでもつい 「,」 を書いてしまいますし 統一感のなさに気持ち悪さも感じるので 書けてほしいなと思うところです
カンマを書けないならその行で閉じカッコにすればいいかなって思いましたが これはなんか違う感があります
フォーマッターが勝手に書き換えてしまいそうですし
1 行で書いていればこれまで通り不満に感じるところはないので できる限り 1 行で収めようと思います
分割代入はこんな感じで書きます
const { foo, bar } = value
指定しなかったキーのプロパティをオブジェクトにまとめて受け取るなら
const { foo, bar, ...rest } = value
というものです
普段は変数が少ないので 1 行で書いてますが 変数が多かったときに複数行にしました
const {
foo,
bar,
baz,
} = value
末尾コンマが書けます
統一感があっていいですよね
この状態で ... を使って残りのプロパティを取得しようとしました
const {
foo,
bar,
baz,
...others,
} = value
エラーになりました
Uncaught SyntaxError: Rest element must be last element
... で指定する変数は最後に来ないといけないそうです
最後にあるのですが 「,」 が入ると次があるとみなされるのか構文エラーです
見た目が揃っていてきれいなので末尾コンマを書きたいのですがダメそうです
ES2015 からは関数呼び出しでも末尾コンマが書けるようになって 末尾コンマできれいに揃えたいんですけどね
console.log(
foo,
bar,
)
だめな理由が次に要素を配置できないからというものなので 次に要素を配置できる spread の方は問題なくコンマを書けます
const obj = {
foo: "bar",
...value,
}
こういうことができますからね
const obj = {
foo: "bar",
...value,
baz: "qux",
}
関数呼び出しも同じです
console.log(
foo,
bar,
...array,
)
末尾カンマを許可した理由は 視覚的に揃っていて美しいからじゃなくて 要素の追加や削除をするときに楽になって diff をとったときの差分もわかりやすくなるという実用的なことからでしょうし仕方ないのかもしれません
const {
foo,
bar,
...rest
} = value
に baz を追加するとしたら bar の次でしょうし 最後に固定で他と扱いの違う rest に末尾カンマがなくても 利便性の点では影響ありません
それでもつい 「,」 を書いてしまいますし 統一感のなさに気持ち悪さも感じるので 書けてほしいなと思うところです
カンマを書けないならその行で閉じカッコにすればいいかなって思いましたが これはなんか違う感があります
const {
foo,
bar.
...rest } = value
フォーマッターが勝手に書き換えてしまいそうですし
1 行で書いていればこれまで通り不満に感じるところはないので できる限り 1 行で収めようと思います