Reflect-metadata
reflect-metadata๋
TypeScript(or JS)์์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ์ Reflact ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค ๋๋ ํจ์์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ ์ ์๊ฒ ํด์ค
๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํ์ ๋ ์ฝ๋์ ๋์์ ์์ ํ๋๊ฒ
Metadata โ "๋ฐ์ดํฐ์ ๋ํ ๋ฐ์ดํฐ", "์ด๋ค ๋ชฉ์ ์ ๊ฐ์ง๊ณ ๋ง๋ค์ด์ง ๋ฐ์ดํฐ", "๋ฐ์ดํฐ์ ์ถ๊ฐ ์ ๋ณด"
์ฆ, ๋ฉํ๋ฐ์ดํฐ๋ ํ์ ์คํฌ๋ฆฝํธ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํตํด ์ถ๊ฐ๋ ํด๋์ค, ๋ฉ์๋, ํ๋กํผํฐ์ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ค.
Reflect
ES6์์ ๋์ ๋ ๋ด์ฅ ๊ฐ์ฒด
๋ฆฌํ๋ ์ ์ ์ฝ๋๊ฐ ์คํ๋๋ ๋์ ์ค์ค๋ก ๊ฒ์ฌํ๊ณ ์์ ํ ์ ์๋ ๊ธฐ๋ฅ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์ฌ์ฉ ๋๋ค.
๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
key: value ๊ตฌ์กฐ์ ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
metadataKey์ ์๋ณ๋๋ฏ๋ก ์ํ๋ ๋งํผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
๋ฉํ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
๋์์ ํน์ ๋ฉํ๋ฐ์ดํฐ ํค์ ์๋ณ๋๋ ๋ฉํ๋ฐ์ดํฐ ๊ฐ ์ถ์ถ
๊ทธ ์ธ ๋ค์ํ api
๋ฉํ ํ๋ก๊ทธ๋๋ฐ์ด๋?
ํ๋ก๊ทธ๋จ์ด์ด ์์ ์ ์ฝ๋๋ฅผ ๋ถ์ํด์ ์์ ํ๋ ๋ฐฉ์์ผ๋ก ์๊ธฐ ์์ (ํ๋ก๊ทธ๋จ)์ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ํจํด
Decorator(@)
ํจ์ ๋๋ ํด๋์ค ์ ์ธ์ด๋ ํด๋์ค ๋ฉค๋ฒ ์์ ์ถ๊ฐํ๋ ์ฃผ์์ผ๋ก, ํด๋น ๊ฐ์ฒด์ ๋์ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋ ํจ์
ํ์ ์คํฌ๋ฆฝํธ "๋ฐ์ฝ๋ ์ดํฐ"์ ํด๋ถํ ๋ฐ ์ฌ์ฉ ํจํด
๋๋๊ฒ๋ TS์๋ง ์๋ ๊ธฐ๋ฅ์ด ์๋ ๋ค์ดํฐ๋ธํ JS ๊ธฐ๋ฅ(ํ์คํ X)์ด๋ผ๊ณ ํ๋ค.
@
์ ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์, ์ ๋ฌ๋ฐ์ ์ธ์(ํด๋์ค, ํจ์)์ ๋์์ ์์ ํ์ฌ ๋ฐํํ๋ค.
์ฆ, ํด๋์ค๋ ํจ์ ์์ ๋ฐฐ์นํ๋ฉด ๋ฐํ์๋ ํด๋น ํจ์, ํด๋์ค๋ฅผ ์ธ์๋ก ์ฌ์ฉํ์ฌ ํธ์ถ๋๊ณ ์ ๋ฌ๋ฐ์ ํจ์,ํด๋์ค์ ๋์์ ์์ ํ์ฌ ๋ฐํํ๋ค.
TS์์ ๋ฐ์ฝ๋ ์ดํฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด tsconfig.json
๋ฐ์ฝ๋ ์ดํฐ ๊ด๋ จ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
Reflect.metadata()
Reflect.metadata()๋ decorator(@)๋ฅผ ๋ง๋๋ ๋ฉ์๋
๋ด๋ถ์ ์ผ๋ก ๋ฐ์ฝ๋ ์ด์ ํ๋ ๊ฐ์ฒด์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋
Reflect.defineMetadata
๋ฅผ ๊ตฌํํ๋ค
ํจ์๋ก ๋ง๋ค์ด์ ์ฌ์ฉ
Last updated