Seungjae Lee 2021. 7. 3. 23:06

๐ŸŽ  Daily

  • ๊ธฐ์ดˆ ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด 
  • koans 10๋ฒˆ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  push

๐Ÿค”  Learned

  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋„ˆ๋ฌด ๋‚ฏ์„ค์–ด์„œ ์•„๋ž˜ ์ฝ”๋“œ๋งŒ ๊ฑฐ์˜ 1์‹œ๊ฐ„ ์ด์ƒ ๋ณธ ๊ฒƒ ๊ฐ™๋‹ค.
    ์™„์ „ํžˆ ์ดํ•ดํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ์„œ ๋ช‡๋ฒˆ์ด๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋ณต์Šตํ•ด์•ผ๊ฒ ์ง€๋งŒ
    ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ rest/spread ๋ฌธ๋ฒ•์„ ๊ฐ์ฒด ๋ถ„ํ•ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋ƒ ์—†๋ƒ๋ฅผ ๋ฌป๋Š” ๊ฒƒ์ธ๋ฐ
    ์ผ๋‹จ ์ง€๊ธˆ๊นŒ์ง€ ์ดํ•ดํ•œ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด 
  • ์ฒซ๋ฒˆ์งธ changeUser ๋ณ€์ˆ˜์— user๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ํ• ๋‹นํ•ด์ฃผ๊ณ  name๊ณผ age ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์žฌํ• ๋‹น ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋‘๋ฒˆ์งธ overwriteChanges ๋ณ€์ˆ˜์— ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋กœ  name: '๋ฐ•ํ•ด์ปค', age: 20 ์ด ์žˆ๋Š”๋ฐ user๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ํ• ๋‹นํ•ด์ฃผ๋ฉด์„œ
    ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ง์”Œ์›Œ์ง€๊ณ  ๊ฒฐ๊ตญ ๋ณต์‚ฌ๋œ user๊ฐ์ฒด๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.
  • ์„ธ๋ฒˆ์งธ changeDepartment ๋ณ€์ˆ˜์— ๋ณต์‚ฌ๋œ user๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋˜๊ณ , user๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ค‘์— company,
    company๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ค‘์— department, department ํ‚ค์˜ ๊ฐ’์„ 'Marketing'์œผ๋กœ ์žฌํ• ๋‹นํ•˜์—ฌ ๋ณ€๊ฒฝํ•œ๋‹ค.
it('rest/spread ๋ฌธ๋ฒ•์„ ๊ฐ์ฒด ๋ถ„ํ•ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค #3', () => {
    const user = {
      name: '๊น€์ฝ”๋”ฉ',
      company: {
        name: 'Code States',
        department: 'Development',
        role: {
          name: 'Software Engineer'
        }
      },
      age: 35
    }

    const changedUser = {
      ...user,
      name: '๋ฐ•ํ•ด์ปค',
      age: 20
    }

    const overwriteChanges = {
      name: '๋ฐ•ํ•ด์ปค',
      age: 20,
      ...user
    }

    const changedDepartment = {
      ...user,
      company: {
        ...user.company,
        department: 'Marketing'
      }
    }

    expect(changedUser).to.eql({
      name: '๋ฐ•ํ•ด์ปค',
      company: {
        name: 'Code States',
        department: 'Development',
        role: {
          name: 'Software Engineer'
        }
      },
      age: 20
    })

    expect(overwriteChanges).to.eql({
      name: '๊น€์ฝ”๋”ฉ',
      company: {
        name: 'Code States',
        department: 'Development',
        role: {
          name: 'Software Engineer'
        }
      },
      age: 35
    })

    expect(changedDepartment).to.eql({
      name: '๊น€์ฝ”๋”ฉ',
      company: {
        name: 'Code States',
        department: 'Marketing',
        role: {
          name: 'Software Engineer'
        }
      },
      age: 35
    })
  })

 

  • ํ”„๋กœํผํ‹ฐ(Property)
    ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„๊ณผ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํŠน๋ณ„ํ•œ ํ˜•ํƒœ
    ๊ฐ์ฒด๋Š” ํ‚ค(key)-๊ฐ’(value)์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. ์ •ํ™•ํžˆ ์ด์•ผ๊ธฐ ํ•˜๋ฉด ํ‚ค๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค์ด๊ณ , ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ ๊ฐ’.

 

  • ์ฃผ๋ง์ด๋ผ ์ฃผ์ค‘์— ๋ชป ์ž” ์ž ์„ ๋ชฐ์•„์„œ ์žค๋”๋‹ˆ ํ•˜๋ฃจ์˜ ๋ฐ˜์ด ์‚ฌ๋ผ์ ธ์„œ ๊ณ„ํšํ•œ ํ•™์Šต๋Ÿ‰์˜ ๋ฐ˜๋„ ๋ชปํ–ˆ๋‹ค.. ์ผ์š”์ผ์€ ์ข€ ๋” ์•Œ์ฐจ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค.

 

๐ŸŒˆ  Tomorrow

  • ๋…ธ๋“œ ๋ฐฑ์—”๋“œ ๊ณต๋ถ€ 
  • koans ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ’€๊ธฐ(ํ’€๋ฉด์„œ ๋ชจ๋ฅด๊ฑฐ๋‚˜ ๋” ์•Œ์•„๋ด์•ผ ํ•  ๊ฒƒ๋“ค ๊ตฌ๊ธ€๋งํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ธฐ)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€๊ธฐ