CHAPTER 2. Diving into TypeScript
Types as in TypeScript
TypeScript์์ ์ ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ์ ๋ค์ ๊ฐ๋จํฉ๋๋ค.
์ด ์ ํ๋ค์ ๊ธฐ์ตํ๊ธฐ ์ฝ๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ ํ์ TS ์ปดํ์ผ๋ฌ๊ฐ ์ ํ์ ์ถ์ธกํ ์ ์๊ธฐ๋๋ฌธ์ ์ ํ์ ์ด๋ค. ์ ํ์ ๋ค์์ Pony ํด๋์ค์ ๊ฐ์ด ๋น์ ์ ์ฑ์์ ๋์ฌ์ ์๋ค.
TypeScript๋ ์ผ๋ถ ์ธ์ด์์ "generic"์ผ๋ก ๋ถ๋ฅด๋๊ฒ์ ์ง์ํ๋ค.
ํด๋น ์ฝ๋๋ ๋ฐฐ์ด์ด '<>' ์ด๋ผ๋ ์ผ๋ฐ์ ์ธ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ponies๋ฅผ ๋ด์์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋น์ ์ ์ด๊ฒ์ ๋ํด ์๋ฌธ์ ๊ฐ์ง์ง ๋ชจ๋ฅธ๋ค. ์ ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ๋ฅํ ์ค์๋ฅผ ํ๋ณํ๋๋ก ๋์ธ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๋์, ๋ง์ฝ ๋น์ ์ด ๋ค์ํ ์ ํ์ ๋ณ์๊ฐ ํ์ํ๋ค๋ฉด ์ด๊ฒ์ ๋น์ ์ ์ฝ๋๋ ์ ๋๋ก ์์ฑํ ์ ์๋ค๋๊ฒ์ ์๋ฏธํ๋๊ฐ? ๊ทธ๋ ์ง ์๋ค. ์๋ํ๋ฉด TS๋ 'any' ๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ํน๋ณํ ์ ํ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๊ฒ์ ๋น์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ฐ์ ธ์จ ๊ฐ์ด๋ ๋์ ์ผ๋ก ์์ฑ๋ ์ปจํ ์ธ ์์ ๊ฐ์ ธ์จ ๋ณ์์ ์ ํ์ ๋ชจ๋ฅผ ๊ฒฝ์ฐ์ ๊ต์ฅํ ์ ์ฉํ ๊ฒ์ด๋ค.
๋ง์ฝ ๋น์ ์ด ๋ณ์๋ฅผ number ๋๋ boolean ์ ํ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์๊ฒฝ์ฐ์๋ union ์ ์ด์ฉํด๋ผ.
Enums
TypeScript๋ "enum"์ ์ ๊ณตํ๋ค. race๋ 'ready', 'started', 'done'์ด ๋ ์ ์๋ค.
enum์ 0๋ถํฐ ์์ํ๋ ์ด๊ฑฐํ ๋ณ์์ด์ง๋ง ์ํ๋ ์ซ์๋ก ์ ํ ํ ์ ์๋ค.
Return types
๋น์ ์ ํจ์์ ๋ฐํ๋๋ ์ ํ์ ์ค์ ํ ์ ์๋ค.
๋ง์ฝ ํ์๊ฐ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์๋๋ค๋ฉด 'void'๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค.
Interfaces
์ด๊ธฐ์ ๋งํ์๋ฏ์ด, ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ์ธ ์์ฑ์ผ๋ก ๊ต์ฅํ ์ข๋ค. ๊ทธ๋์ ํจ์๋ ์ผ์นํ๋ ๋ณ์๋ฅผ ๊ฐ์ง ํจ์๋ฅผ ๋ฐ๋๋ค๋ฉด ์ ์์ ์ผ๋ก ๋์ํ ๊ฒ์ด๋ค.
ํจ์๋ score ๋ณ์๋ฅผ ๊ฐ์ง ์ด๋ ํ ๊ฐ์ฒด์๋ ์ ์ฉ๋ ์ ์์ ๊ฒ์ด๋ค. typeScript๋ ์ด๋ป๊ฒ ๋ณํํ๋ ๊ฒ์ผ๊น? ์ด๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ๋ค. ๋น์ ์ object ์ ํ์ ์ ์ํ๋ฉด ๋๋ค.
ํด๋น ์ฝ๋๋ number ์ ํ์ score ๋ณ์๋ฅผ ๊ฐ์ง ํ๋ผ๋ฏธํฐ์ฌ์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋น์ ์ ์ด๊ฒ์ interface๋ก ์ ์ ํ๊ฒ์ด๋ค.
Optional arguments
๋ Javascript์ ๋ค๋ฅธ ๋์์ ํ๋ผ๋ฏธํฐ๊ฐ ์ ํ์ ์ด๋ผ๋ ๊ฒ์ด๋ค. ๋น์ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋๋ฝ์ํฌ์ ์๊ณ ๊ทธ๊ฒ๋ค์ 'undefined'๋ก ์ ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ด ์ ํ์ด ์ ํด์ง ํ๋ผ๋ฏธํฐ๋ก ์ ์ํ๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ ๋น์ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ๋๋ฝํ๋ค๋ ๊ฒ์ ํ๊ธฐํ ๊ฒ์ด๋ค.
ํ๋ผ๋ฏธํฐ๊ฐ ์ ํ์ ์ด๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋น์ ์ ํ๋ผ๋ฏธํฐ ๋ค์ '?' ๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค. ์ฌ๊ธฐ points ๋ผ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ค.
Functions as property
๋น์ ์ ๋ณ์ ๋์ ์ ํน์ ํ ํจ์๋ฅผ ๊ฐ์ ธ์ผ๋ง ํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ธฐ์ ํ๋๊ฒ์ ํฅ๋ฏธ๋ฅผ ๊ฐ์ง ๊ฒ์ด๋ค.
interface ์ ์ธ์ ์ด๋ ๊ฒ ๋ ๊ฒ์ด๋ค.
Classes
ํด๋์ค๋ interface๋ฅผ ๊ตฌํํ ์ ์๋ค. Pony ํด๋์ค๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋๋ก ๋์ํ์ฌ์ผ ํ๋ค.
์ปดํ์ผ๋ฌ๋ ํด๋น ํด๋์ค์ num ์ด๋ผ๋ ํจ์๋ฅผ ๊ฐ์ ๋ก ๊ตฌํํ ๊ฒ์ด๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ ์ข๊ฒ ๊ตฌํํ๊ธฐ ์ํด number ๋์ ์ string์ ์ฌ์ฉํ์๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ ์๋ฌ๋ฅผ ๋ํ๋ผ ๊ฒ์ด๋ค.
๋ง์ฝ ์ํ๋ค๋ฉด ์ด๋ ๊ฒ๋ ๊ตฌํํ ์ ์๋ค.
interface๋ ๋๋ค๋ฅธ interface๋ฅผ ํ์ฅํ ์ ์๋ค.
๋น์ ์ด TypeScript์์ ํด๋์ค๋ฅผ ์ ์ ํ๋ ค๊ณ ํ๋ค๋ฉด ๋น์ ์ ํด๋์ค์ ํจ์์ ๋ณ์๋ฅผ ๊ฐ์ง์ ์๋ค. ๋น์ ์ ์ด๊ฒ์ด TypeScript์์๋ง ํ์ฉํ๋ ๊ฒ์ด์ง, ES6 ํ์ค์ด ์๋๊ฒ์ ์ธ์งํด์ผ ํ ์ง๋ ๋ชจ๋ฅธ๋ค.
๋ชจ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก public์ผ๋ก ์ค์ ๋์ด ์์ง๋ง ๋น์ ์ private์ ์ฌ์ฉํ์ฌ ํจ์๋ ๋ณ์๋ฅผ ์จ๊ธธ ์ ์๋ค. ๋ง์ฝ ๋น์ ์ด ์์ฑ์ ํ๋ผ๋ฏธํฐ์ private๋๋ public์ ์ถ๊ฐํ๋ค๋ฉด ์ด๊ฒ์ private , public ๋ณ์๋ฅผ ์ด๊ธฐ์ ์์ฑ๋ ์ ์๋๋ก ํ๋ ์์ฝ์ด๋ค.
๋ ์์ธํ ์ ๋ณด๋ก ํํํ ์ ์๋ค.
Working with other libraries
JS๋ก ์์ฑ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์์ ํ ๋, ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๋ค ์ ํ์ ํ๋ผ๋ฏธํฐ๊ฐ ์์๋๋์ง ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ช ์ผ๋ก ์๊ฐํ ์ง ๋ชจ๋ฅธ๋ค. TypeScript์ ๊ฐ์ ์ค ํ๋์ ๋๋ค. ํด๋น ๋ฉค๋ฒ๋ ์ผ๋ฐ์ ์ธ ์๋ฐ ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ๋ ธ์ถ ๋ ์ ํ๊ณผ ํจ์๋ฅผ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์๋ค.
์ธํฐํ์ด์ค๊ฐ ํฌํจ๋ ํ์ผ์๋ ํน๋ณํ ํ์ฅ์(".d.ts")๊ฐ ์๋ค. ๊ทธ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์์ ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ค. ์ด ํ์ผ์ ์ฐพ๋ ์ข์ ์ฅ์๋ DefinitelyTyped ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ฝ ๋น์ ์ด Angularjs 1 ๋ฒ์ ผ์ ํ๋ก์ ํธ์์ ts ํ์ผ์ ์ฌ์ฉํ์๋ค๋ฉด ๋น์ ์ npm์ ์ฌ์ฉํ์ฌ ์ ์ ํ ํ์ผ์ ๋ค์ด ๋ฐ์ ์ ์๋ค.
๋๋ ์๋์ผ๋ก ๋ค์ด๋ฐ์ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ํด๋น ํ์ผ์ ๋น์ ์ ์ฝ๋ ์๋จ์ ํฌํจ๋ ๊ฒ์ด๊ณ , ์ปดํ์ผ ์ฒดํฌ๋ฅผ ํ ์ ์์ ๊ฒ์ด๋ค.
"reference path="angular.d.ts" ๋ TS์ ์ํด ํน๋ณํ๊ฒ ์ ์ธ๋ ์ฃผ์์ผ๋ก ์ปดํ์ผ๋ฌ์๊ฒ ์ธํฐํ์ด์ค angular.d.ts๋ฅผ ์ฐพ์ผ๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด์ ๋น์ ์ด AngularJS ํจ์๋ฅผ ์๋ชป ์ฌ์ฉํ์๋ค๋ฉด ๋์ ์ผ๋ก ์คํ๋ ํ์ ์์ด ์ปดํ์ผ๋ฌ๋ ์๋ ค์ค ๊ฒ์ด๊ณ ๋น์ ์ ํด๋น ์์ญ์ ๊ณ ์น ์ ์๋ค. ์ปดํ์ผ๋ฌ๋ node_modules ํด๋์ ์ข ์๋ฌผ๋ก ํจํค์ง ๋์ด ์์ ๊ฒฝ์ฐ์๋ ์ธํฐํ์ด์ค๋ฅผ ์๋์ผ๋ก ๋ฐ๊ฒฌํ ์ ์๋ค. ์ ์ ๋ ๋ง์ ํ๋ก์ ํธ ๋ค์ด ํด๋น ๋ฐฉ์์ ์ฑํํ๊ณ ์์ผ๋ฉฐ Angular 2 ๋ํ ๊ทธ๋ ๋ค. ๊ทธ๋์ ๋น์ ์ ํ๋ก์ ํธ์ ์ธํฐํ์ด์ค๋ฅผ ํฌํจํ๋๊ฒ์ ๋ํด์ ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค. ๋น์ ์ด NPM์ ์ฌ์ฉํ์ฌ ์์กด์ฑ์ ์ ์งํ๋ค๋ฉด TS ์ปดํ์ผ๋ฌ๋ ์๋์ผ๋ก ํ์ธํ ๊ฒ์ด๋ค.
Decorators
์ด๊ฒ์ ์๋ก์ด ํน์ง์ด๋ฉฐ Angularjs๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ค์ง TypeScript 1.5 ์ ์ถ๊ฐ๋์๋ค. ๊ฒ๋ค๊ฐ ๊ณง ์์ ์๋ฏ์ด Angular 2 Componenet๋ Decorator๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ช ๋ ์ ์๋ค. ์ด๊ฒ์ ๋ชจ๋ ์ธ์ด์์ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์, decorator์ ๋ํด์ ๋ค์ด๋ณด์ง ์์์ ์๋ ์๋ค. decorator๋ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ ํ ์ ์๋ค. ๊ทธ๋ค์ java, c#, python ๋๋ ๋ด๊ฐ ์์ง ๋ชปํ๋ ์ธ์ด์์ ์ฃผ๋ก ์ฌ์ฉ๋์ด์ง๋ ์ ์ธ๊ณผ ๊ฐ์ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํ ๊ฒ์ด๋ค. ์ธ์ด์ ๋ฐ๋ผ์ ๋น์ ์ ์์ฑ, ํจ์, ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ์ธ์ ์ธ์ด์ ์ํด ์ฌ์ฉ๋์ด์ง์ง ์๊ณ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฃผ๋ก ์ฌ์ฉ๋์ด ์ง๋ค.
Decorator๋ ๋งค์ฐ ๊ฐ๋ ฅํ๋ค. ๊ทธ๋ค์ ๋ฉ์๋, ํด๋์ค ๋ฑ์ ์์ ํ ์ ์์ผ๋ฉฐ ์๋ฅผ ๋ค์ด ํธ์ถ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ญํ ์ ์์ผ๋ฉฐ, ๋์์ด ํธ์ถ ๋ ๋ ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ ํ๋ ์ ์ํฌ์ ๋ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์ง๊ธ๊น์ง๋ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ช๋ช์ ๊ฐ๋ฅํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ด๋ ์งํํ๊ณ ์๊ณ ํฅํ์๋ ํ์คํ ์ํค์๋ ๊ณต์ ์ ์์ด ์์ต๋๋ค. TypeScript ๊ตฌํ์ ์ ์ ๋ ํ์ค ๋ณด๋ค ์ฝ๊ฐ ๋ ๊ฐ๊น๋ค.
Angular2์์๋ ํ๋ ์์ํฌ์ ์ํด ์ ๊ณตํ๋ decorator๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. decorator์ ์ญํ์ ๋งค์ฐ ๊ฐ๋จํ๋ค. decorator๋ ์ฐ๋ฆฌ์ ํด๋์ค์ ์ฝ๊ฐ์ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค. " ํด๋น ํด๋์ค๋ ์ปดํฌ๋ํธ์ด๋ค.", "์ด๊ฒ์ ์ ํ์ ์ธ ์์กด์ด๋ค." "์ด๊ฒ์ ์ปค์คํฐ๋ง์ด์ง๋ ์์ฑ์ด๋ค." ๋น์ ์ด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ ์ผ๋ก ๋ฃ๋๋ค๋ฉด decorator๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ์๊ตฌ ํ์ง ์๋๋ค.
TypeScript์์๋ decorator๋ @๋ก ์์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์ค์ ์ ์ฉํ ์ ์๊ณ ๋ณ์ ๋๋ ํจ์ ๋๋ ํ๋ผ๋ฏธํฐ์๋ ์ ์ฉํ ์ ์๋ค. decorator๋ ์์ฑ์์๋ ์ ์ฉ๋ ์ ์์ผ๋ ์์ฑ์์ ํ๋ผ๋ฏธํฐ์๋ ์ ์ฉ๋ ์ ์๋ค.
์ด๊ฒ์ ๋ํด ๋ ํ์คํ ์ดํดํ๊ธฐ ์ํด์ ๊ฐ๋จํ decorator๋ฅผ ๋น๋ํด๋ณด์. @log๋ ๋ชจ๋ ํจ์๊ฐ ํธ์ถ๋ ๋ ์ฌ์ฉ๋๋ค.
์ ์ํ๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ ์ด ์๊ฐ์ด ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํด์ผ ํ๋ค.
๋น์ ์ด decorator์ ์ ์ฉํ๊ธธ ์ํ๋ ๊ฒ์ ๋ฐ๋ผ์, ํจ์๋ ๋งค๋ฒ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ์์ ๊ฒ์ด๋ค. ํด๋น ํจ์ decorator๋ ์ธ๊ฐ์ง ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๋ค.
target : decorator์ ์ํด ๋ชฉํ๋ก ํ๋ ํจ์
name : targeted ํจ์์ ์ด๋ฆ
descriptor : targeted๋ ํจ์์ ์ค๋ช
์ฐ๋ฆฌ๋ ํจ์ ์ด๋ฆ์, ๊ทธ๋ฌ๋ ๋น์ ์ ๋น์ ์ด ์ํ๋ ์ด๋ค ๊ฒ์ด๋ ํ ์ ์๋ค. ๊ทธ๋์ ๊ฐ๋จํ ์๋ฅผ ๋ค์ด, getRace() ๋๋ getRaces() ํจ์๋ ๋งค ๋ฒ ํธ์ถํ๋ค. ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ธ ๋ก๊ทธ์์ ์ถ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
user ์ ๊ฐ์ด, Angular2์ decorator๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ดํด ๋ณด๊ฒ ๋ค.
@Component decorator๋ Home ํด๋์ค์ ์ถ๊ฐ๋์๋ค. Angular2 ๊ฐ ๋ก๋๋์์ ๋, ๊ทธ๊ฒ์ Home ํด๋์ค๋ฅผ ํ์ธํ ๊ฒ์ด๊ณ component๋ผ๋ ๊ฒ์ผ๋ก ์ดํดํ ๊ฒ์ด๋ค. ๋ณด์๋ค์ํผ, decorator๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ ์ ์๋ค.
๋๋ decorator์ ๊ฐ๊ณต๋์ง ์์ ๊ฐ๋ ์ ์๊ฐํ๊ธธ ์ํ๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ decorator๋ฅผ ์ฑ ์ ์ฒด์์ ์ดํด๋ณผ ๊ฒ์ด๋ค. TypeScript ๋์ ์ Babel๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ์ง์ ํด์ผ ํ๋ค. ๋ชจ๋ Angular 2 decorator๋ฅผ ์ง์ํ๋ ํ๋ฌ๊ทธ์ธ๋ ์๋ค. : angular2-annotations
Babel์ ํด๋์ค ์์ฑ๋ ์ง์ํ์ง๋ง TypeScript์์ ์ ๊ณตํ๋ ์ ํ ์์คํ ์ ์ง์ํ์ง ์๋๋ค. ๋น์ ์ Babel์ ์ฌ์ฉํ ์ ์๊ณ "ES6+"๋ก ์์ฑํ์ฌ๋ผ. ๊ทธ๋ฌ๋ ๋น์ ์ ์ ํ๋ค์ ์ฌ์ฉํ ์ ์์๊ฒ์ด๊ณ ๊ทธ๋ค์ ์์กด์ฑ ์ฃผ์ ์ ๋งค์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค๋ฉด, ์์ ํ ๊ฐ๋ฅํ์ง๋ง ์ ํ์ ๋์ฒดํ๊ธฐ ์ํด ๋ ๋ง์ decorator๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
๊ทธ๋์ ๋์ ์กฐ์ธ์ TypeScript ์๋ํ๋ผ๋ ๊ฒ์ด๋ค. ๊ทธ๊ฒ์ผ๋ก ๋ถํฐ ๋์จ ๋์ ๋ชจ๋ ๊ฒฝํ์ ์ฌ์ฉํ ์ ์๋ค. ๋น์ ์ด ๋๋จธ์ง์ ๋ํ ๊ฒ์ ์๊ณ ์ต์ฉํ๊ณณ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ด๊ฒ์ ๋ฐฉํด๋์ง ์๋๋ค. ๋ง์ฝ ๋น์ ์ด ์ซ๋ค๋ฉด, decorator๋ Babel๋๋ Traceur ๋ฅผ ์ฌ์ฉํ ES6 ๋๋ ์ฌ์ง์ด ES5๋ก ์ ํํ๋ ๊ฒ์ด ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ ๊ฒ์ด๋ค. (์์งํ ES5๋ก๋ angular 2 ์ฑ์ด ์์ข์ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.)
Reference URL
Last updated