728x90
๐ Spread ์ฐ์ฐ์(...)์ ํ์ฉ
TS(TypeScript)
๋ฅผ ๊ณต๋ถํ๋ค๊ฐ Spread
๋ฅผ ๋ค์ํ ๊ณณ์ ์ฌ์ฉํจ์ ๊นจ๋ซ๊ณ ์ ๋ฆฌํ๊ธฐ ์ํด ๊ธ์ ๋จ๊ธด๋ค. ๋์ฒด๋ก ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์์ฃผ ์ฐ์ธ๋ค.
- ๊ฐ์ฒด ๋ณต์ฌ(์ฃผ์ ์ฐธ์กฐ๊ฐ ์๋ ๊ฐ ๋ณต์ฌ,
origin
๊ฐ ๋ณ๊ฒฝ X) - ๊ฐ์ฒด ๋ณํฉ(์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ํฉ์น ์ ์๋ค.)
- ๊ฐ์ฒด ํน์ ๊ฐ ๋ณ๊ฒฝ(
useState
์ฌ์ฉ ์, ๋ถ๋ณ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํน์ ๊ฐ๋ง `update`ํ๋ ๋ฐฉ๋ฒ) - ์์ฌ ์ฐ์ฐ์(rest operator) ์ฌ์ฉ(ํน์ ๊ฐ์ ์ ์ธํ ๋๋จธ์ง๋ฅผ ๋ณ๋์ ๋ณ์์ ์ ์ฅํ๊ณ ์ถ์ ๋)
728x90
๋ค์์ ์ฝ๋๋ฅผ ํ๋์ฉ ์ดํด๋ณด์.
// 1. ๊ฐ์ฒด ๋ณต์ฌ
// * spread ์ฐ์ฐ์ ๋ฏธ ์ฌ์ฉ(์ฃผ์ ์ฐธ์กฐ, ๋ณธ๋์ ๊ฐ์ด ๋ฐ๋๋ค.)
const myScore = [80, 85, 90];
const newScore = myScore
newScore[0] = 50
console.log(myScore)
๐๐ฝ [50, 85, 90]
// * spread ์ฐ์ฐ์ ์ฌ์ฉ(๊ฐ ์ฐธ์กฐ, ๋ณธ๋์ ๊ฐ์ด ๋ฐ๋์ง ์๋๋ค.)
const myScore = [80, 85, 90];
const newScore = [...myScore];
newScore[0] = 50
console.log(myScore)
๐๐ฝ [80, 85, 90]
// * ๊ฐ์ฒด ๋ณต์ฌ
const myInfo = {name: 'AYW', age:27, marriage: false}
const newInfo = {...myInfo}
console.log(newInfo)
๐๐ฝ {name: 'AYW', age:27, marriage: false}
// 2. ๊ฐ์ฒด ๋ณํฉ
const firstInfo = {name: 'AYW'}
const secondInfo = {age: 27}
const resultInfo = {...firstInfo, ...secondInfo}
console.log(resultInfo)
๐๐ฝ {name: 'AYW', age:27}
// 3. ๊ฐ์ฒด ํน์ ๊ฐ ๋ณ๊ฒฝ
const myInfo = {name: 'AYW', age:27, marriage: false}
const newInfo = {...myInfo, marriage: !myInfo.marriage}
console.log(newInfo)
๐๐ฝ {name: 'AYW', age:27, marriage: true}
// 4. ์์ฌ ์ฐ์ฐ์(spread operator) ์ฌ์ฉ
const myInfos = {money: 3000, name: 'AYW', age:27, }
const {money, ...restInfo} = myInfos
console.log(restInfo)
๐๐ฝ {name: 'AYW', age:27}
๋ฐ์ํ
๋๊ธ