次のように三項演算子で配列代入時、要素の追加有無制御しようにすると、false のときでも配列に要素が追加されてしまう。
function sample(bool: boolean) {
const tmp = [
'item1',
bool ? 'item?' : null, // falsyの場合、nullが要素として追加されてしまう
'item2'
];
console.log(tmp.length); // boolの真偽に関わらず、3になる
}
bool が false の場合、配列は ['item1', null, 'item2'] になり、要素数は 3 のままです。
スプレット構文と組み合わせることで、要素を追加せずに済む。
function sample(bool: boolean) {
const tmp = [
'item1',
...(bool ? ['item?'] : []),
'item2'
];
console.log(tmp.length); // boolがfalsyな場合、2になる
}
この書き方なら、bool が false のときには ['item1', 'item2'] となり、不要な null 要素が含まれない。