Tslint: Object.assign์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์ธ ๊ฒฝ์šฐ ๊ฐœ์ฒด ํ™•์‚ฐ์„ ์„ ํ˜ธํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 05์›” 25์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: palantir/tslint

๋ฒ„๊ทธ ์‹ ๊ณ 

  • __TSLint ๋ฒ„์ „__: 5.3

๋ฆฐํŠธ๋˜๋Š” TypeScript ์ฝ”๋“œ

value = Object.assign(new Model(), value)

prefer-object-spread ์‚ฌ์šฉ

์‹ค์ œ ํ–‰๋™

๋ณดํ‘ธ๋ผ๊ธฐ ์˜ค๋ฅ˜, ๊ฐœ์ฒด ํ™•์‚ฐ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ž๋™ ์ˆ˜์ •

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์•„๋ฌด๊ฒƒ๋„ ์•„๋‹˜. ์ด ๊ทœ์น™์€ Object.assign ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์ธ ๊ฒฝ์šฐ๋ฅผ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • --project ๊ฐ€ ์ œ๊ณต๋˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์˜ ์œ ํ˜•์ด ํด๋ž˜์Šค์™€ ์œ ์‚ฌํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š๊ณ  ๊ตฌ๋ฌธ ๊ฒ€์‚ฌ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์€ new ... ํ•˜๊ณ  ํ‘œํ˜„์‹์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/palantir/tslint/issues/2618#issuecomment -303879255์— ๋ณด๊ณ ๋œ ๋Œ€๋กœ

Fixed Bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ทœ์น™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์–ธ๊ฐ€์— ํ• ๋‹น๋œ ๊ฒฝ์šฐ์—๋งŒ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Object.assign์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ CallExpression, NewExpression ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ์—๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Identifier ๋˜๋Š” PropertyAccessExpression๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์œ ํ˜• ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

Object.assign ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ๋ถ€์ž‘์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์ด TypeScript๊ฐ€ { ...x, ...y } ๋ฅผ Object.assign({}, x, y) ๋ณ€ํ™˜ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.) ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ทœ์น™์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทœ์น™์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐœ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ธ ๊ฒฝ์šฐ์—๋งŒ ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๊ธฐ์ˆ ์ ์œผ๋กœ ๋‹น์‹ ์ด ์˜ณ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ๋Œ€ํ•œ ๋ถ€์ž‘์šฉ์— ๋Œ€ํ•ด ์ฃผ์˜ํ•˜์ง€ ์•Š๊ณ  _์‹ค์ œ๋กœ_ ๊ฐœ์ฒด ํ™•์‚ฐ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์–ด์จŒ๋“  ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ์ข…์ข… ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์—ฌ์ „ํžˆ์ด ๊ทœ์น™์ด ๊ทธ๊ฒƒ์„ ํฌ์ฐฉํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ ์˜ตํŠธ์ธ์ด ๋ ๋“ฏ...

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ทœ์น™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์–ธ๊ฐ€์— ํ• ๋‹น๋œ ๊ฒฝ์šฐ์—๋งŒ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Object.assign์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ CallExpression, NewExpression ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ์—๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Identifier ๋˜๋Š” PropertyAccessExpression๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์œ ํ˜• ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰