[๋ชจ๋˜ JavaScript] spread

sunnyยท2022๋…„ 6์›” 17์ผ
0

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
5/7

Spread syntax (...)

๐Ÿ’ก ES2015์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ syntax
๐Ÿ’ก ๋ณ‘ํ•ฉ, ๊ตฌ์กฐ ๋ถ„๋ฐฐ ํ• ๋‹น(destructing) ๋“ฑ์— ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

spreadโ“ ํฉ๋ฟŒ๋ฆฐ๋‹คโ“

Spread operator - object merge

personalData, publicData 2๊ฐœ์˜ object๊ฐ€ ์žˆ๊ณ  ์ด ๋‘๊ฐœ๋ฅผ ํ•ฉ์ณ์„œ user๋ฅผ ๋งŒ๋“ค๋•Œ, ๋‘ object๋ฅผ ๊ฐ๊ฐ ํผํŠธ๋ ค์„œ ํ•œ ์˜ค๋ธŒ์ ํŠธ ์•ˆ์— ํ•ฉ์ณ์ฃผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
ํฉ๋ฟŒ๋ ค์„œ ์ด ์•ˆ์— ๋“ค์–ด๊ฐ€๊ฒŒ ํ•œ๋‹คโ“โ—

const personalData = {
	nickname: 'SH',
  	email: 'sh@email.com',
}

const publicData = {
	age: 22,
}

const user = {
	...personalData,
  	...publicData,
}

โ— ๊ธฐ์กด์— ์žˆ๋˜ ๊ฐ’ ๋ฎ์–ด์“ฐ๊ธฐ๋„ ๊ฐ€๋Šฅ โ—

const overrides = {
	DATABASE_HOST: 'myhost.com',
  	DATABASE_PASSWORD: 'mypassword',
}

const config = {
	DATABASE_HOST: 'default.host.com',
  	DATABASE_PASSWORD: '****',
  	DATABASE_USERNAME: 'myuser',
  	...overrides,
}

overrides ์œ„์น˜ ์ฃผ์˜โ— ์ˆœ์„œ ์ฃผ์˜โ—

Spread operator - object rest

destructing์—์„œ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅโ—
nickname์„ ์ œ์™ธํ•œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

const user = {
	nickname: 'SH',
  	age: 22,
  	email: 'sh@email.com',
}

const { nickname, ...personalData } = user
console.log(personalData) // { age: 22, email: 'sh@email.com' }

Spread operator - array merge

๋ฐฐ์—ด์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅโ—
ํ•˜๋‚˜์˜ array๋กœ ๋ณ‘ํ•ฉ

const pets = ['dog', 'cat']
const predators = ['wolf', 'cougar']
const animals = [...pets, ...predators]

Spread operator - array rest

๋‚จ์€ ์›์†Œ๋“ค ๋ฌถ์–ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ โ—

const pets = [head, ...rest] = [1, 2, 3]
console.log(head) // 1
console.log(rest) // [2, 3]

Spread syntax์˜ ํ™œ์šฉ

const shouldOverride = true

const user = {
  ...{
    email: 'sh@email.com',
    password: '****',
  },
  ...{
    nickname: 'SH',
  },
  ...(shouldOverride
    ? {
        email: 'abc@email.com', // shouldOverride๊ฐ€ ture์ผ ๋•Œ๋งŒ ๋ฎ์–ด์”Œ์›€
      }
    : null),
}

console.log(user)

Spread syntax์˜ ํ™œ์šฉ2

function fun(head, ...rest) {
  console.log(head)
  console.log(rest)
}

fun(1, 2, 3, 4)

๊ฒฐ๊ณผ
1
[ 2, 3, 4 ]

0๊ฐœ์˜ ๋Œ“๊ธ€