Stack Overflow (http://stackoverflow.com/questions/28150967/typescript-cloning-object)์ ๋ํ ์ง๋ฌธ์ ๋ ๋ฌธ์ํํ์ต๋๋ค.
typescript์์ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ํ์ฌ ๋ค์ ํดํน์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
var cloneObj = new this.constructor ();
๊ทธ๋ฌ๋ typescript๋ ๋ค์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ค๋ฅ TS2351 : ํ์์ ํธ์ถ ๋๋ ๊ตฌ์ฑ ์๋ช ์ด์๋ ์์๋ 'new'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ๋ต๋ณ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ ํํ ์ค๋ช ํ ์ ์์ต๋๊น?
๋ฌธ์ ๋ ์์ฑ์๋ฅผ ๋์ ์ผ๋ก ํธ์ถํ๋ ค๊ณ ํ ๋ ์ปดํ์ผ๋ฌ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
var cloneObj = new this.constructor(); // error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
์ปดํ์ผ๋ฌ 1.3์ ํ๋ณตํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์
var cloneObj = new (<any> this.constructor());
๊ทธ๋ฌ๋ ๊ทธ ๋ฐฉ๋ฒ์ 1.4.1์์ ์๋ํ์ง ์์ต๋๋ค.
์์ฑ์๋ฅผ ๋์ ์ผ๋ก ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
SO์์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์บ์คํธ ์ค ํ๋๊ฐ ์ต์ ๋นํธ๋ก ์๋ํ๋ฉฐ ๋ค์ ์ดํ ๋ชจ๋ ๋ฒ์ ์ ์์ด์ผํฉ๋๋ค.
var cloneObj = new (<any>this.constructor());
var cloneObj = new (<any>this.constructor)();
var cloneObj = new (<any>this).constructor();
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
SO์์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์บ์คํธ ์ค ํ๋๊ฐ ์ต์ ๋นํธ๋ก ์๋ํ๋ฉฐ ๋ค์ ์ดํ ๋ชจ๋ ๋ฒ์ ์ ์์ด์ผํฉ๋๋ค.