๋ชจ๋ ํ์ ์ ๊ฒ์ฆํ๊ณ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ ์๋ฐ์คํฌ๋ฆฝํธ import assertion ํ์ ์ฒดํน์ ์์๋ณด์ธ์. ์ฝ๋ ์ ๋ขฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ Import Assertion ํ์ ์ฒดํน: ๋ชจ๋ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅํ๊ธฐ
ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์์ ๋ชจ๋์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ฌ๋ฐ๋ฅธ ํด์์ ๋ณด์ฅํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์ธ ํน์ฑ์ ๋๋๋ก ๋ชจ๋์ด ์์๊ณผ ๋ค๋ฅผ ๊ฒฝ์ฐ ์๊ธฐ์น ์์ ๋ฐํ์ ์ค๋ฅ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. Import assertion, ํนํ ํ์ ์ฒดํน์ ๋ชจ๋์ ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ก๋ ์์ ์ ์ด ์์์ ๊ฒ์ฆํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋์ ์ ๋ขฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
Import Assertion์ด๋ ๋ฌด์์ธ๊ฐ?
Import assertion์ ๋ชจ๋์ ๊ฐ์ ธ์ฌ ๋(import) ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ์ ๋ณด๋ import ๋ฌธ ๋ด์์ ํค-๊ฐ ์์ผ๋ก ํํ๋ฉ๋๋ค. ์ด๋ฌํ assertion์ ๋ชจ๋์ ๋์์ ์์ ํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋์ด ํน์ ๊ธฐ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฅผ ํตํด ๋ชจ๋์ ๊ตฌ์กฐ๋ ๋ด์ฉ์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ์ํ์ฌ ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ํด์๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
import module from './module.json' assert { type: 'json' };
์ฌ๊ธฐ์ `assert { type: 'json' }`์ด import assertion์ ๋๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์๊ฒ "๋๋ ์ด ๋ชจ๋์ด JSON ํ์ ์ผ ๊ฒ์ผ๋ก ์์ํ๋ค"๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค. ๋ง์ฝ ์์ง์ด ๋ชจ๋์ ๋ก๋ํ์ ๋ JSON์ด ์๋๋ผ๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ฉด, ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ช ์ฃผ๊ธฐ ํ๋ฐ์ ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ผ๋ก ์น๋ช ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ฐฉํฉ๋๋ค.
ํ์ ์ฒดํน์ ์ค์์ฑ
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ ์ธ์ด์ ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ํ์ ์ฒดํน์ด ๋ฐํ์์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ก๋์ ํ๊ฒฝ์์ ์คํ๋ ๋๋ง ๋๋ฌ๋๋ ์ค๋ฅ์ ๊ฐ๋ฅ์ฑ์ ๋ดํฌํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐํ์ ์ค๋ฅ๋ ๋๋ฒ๊น ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ์๊ธฐ์น ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋์, ๋ฐ์ดํฐ ์์, ์ฌ์ง์ด ๋ณด์ ์ทจ์ฝ์ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
Import assertion ํ์ ์ฒดํน์ ํ์ ๊ฒ์ฆ์ ๋ถ๋ด์ ๋ฐํ์์์ ๋ก๋ ํ์์ผ๋ก ์ฎ๊น๋๋ค. ๋ชจ๋์ ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํจ์ผ๋ก์จ, ๋น์ ์ ๋ณธ์ง์ ์ผ๋ก ๋ชจ๋๊ณผ ์ด๋ฅผ ๊ฐ์ ธ์ค๋ ์ฝ๋ ์ฌ์ด์ ๊ณ์ฝ์ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ณ์ฝ์ด ์๋ฐ๋๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฆ์ ์ด๋ฅผ ์๋ ค ์ค๋ฅ๊ฐ ๋ ์ด์ ์ ํ๋๋ ๊ฒ์ ๋ง์ต๋๋ค.
์ด๋ฌํ ํ์ ๋ถ์ผ์น์ ์กฐ๊ธฐ ๋ฐ๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ฝ๋ ์ ๋ขฐ์ฑ ํฅ์: ํ์ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํจ์ผ๋ก์จ ๋ฐํ์ ์์ธ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ถฉ๋์ ์ํ์ ์ค์ ๋๋ค.
- ์ ์ง๋ณด์์ฑ ํฅ์: ๋ช ์์ ์ธ ํ์ ์ ์ธ์ ๋ชจ๋์ ์์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ๋ ์ฝ๊ฒ ์ดํดํ๊ฒ ํ์ฌ, ์ฝ๋ ๋ฆฌํฉํ ๋ง๊ณผ ๊ฐ๋ฐ์ ๊ฐ์ ํ์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ๋๋ฒ๊น ์๊ฐ ๋จ์ถ: ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋, import assertion์ ๋ฌธ์ ์ ์์ธ์ ๋ช ํํ๊ฒ ์๋ ค์ฃผ์ด ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๋ณด์ ๊ฐํ: ํน์ ์๋๋ฆฌ์ค์์ ํ์ ๊ฒ์ฆ์ ๋ชจ๋์ด ํ์ ๋ถ์ผ์น๋ฅผ ์ ์ฉํ๋๋ก ์ ์์ ์ผ๋ก ์กฐ์๋์ง ์์์์ ๋ณด์ฅํ์ฌ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ฐฉํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
Import Assertion ํ์ ์ฒดํน์ ์๋ ๋ฐฉ์
Import assertion ํ์ ์ฒดํน์ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด `assert` ์ ์ ์ ์ธ๋ ํ์ ๊ณผ ์ค์ ๋ก ๊ฐ์ ธ์ค๋ ๋ชจ๋์ ํ์ ์ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค. ์์ง์ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ด์ฉ๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋์ ํ์ ์ ๊ฒฐ์ ํฉ๋๋ค. ๋ง์ฝ ์ ์ธ๋ ํ์ ๊ณผ ์ค์ ํ์ ์ด ์ผ์นํ์ง ์์ผ๋ฉด, ์์ง์ ์ค๋ฅ, ์ผ๋ฐ์ ์ผ๋ก `TypeError` ๋๋ ๋ชจ๋ ํ์ ๋ถ์ผ์น๋ฅผ ๋ํ๋ด๋ ์ ์ฌํ ์์ธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์์ ์๋๋ฆฌ์ค
๋ค์ํ ์๋๋ฆฌ์ค์์ import assertion ํ์ ์ฒดํน์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ช ๊ฐ์ง ์ค์ ์์๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. JSON ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
์ค์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ JSON ํ์ผ์ ๊ฐ์ ธ์ค๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ด ์๋ค:
// config.json
{
"apiUrl": "https://api.example.com",
"timeout": 5000
}
// main.js
import config from './config.json' assert { type: 'json' };
console.log(config.apiUrl);
์ด ์์ ์์ `assert { type: 'json' }` ์ ์ ๊ฐ์ ธ์จ ๋ชจ๋์ด JSON ํ์ผ์ด์ด์ผ ํจ์ ๋ช ์์ ์ผ๋ก ์ ์ธํฉ๋๋ค. ๋ง์ฝ `config.json` ํ์ผ์ด ์ค์๋ก ๋ค๋ฅธ ์ ํ์ ํ์ผ(์: ์ ํจํ์ง ์์ JSON์ ํฌํจํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ)๋ก ๊ต์ฒด๋๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ฐ์ ธ์ค๊ธฐ ๊ณผ์ ์์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ํจํ์ง ์์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
2. CSS ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
CSS ๋ชจ๋๋ก ์์ ํ ๋, import assertion์ ์ฌ์ฉํ์ฌ ์ ํจํ CSS ํ์ผ์ ๊ฐ์ ธ์ค๊ณ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค:
// styles.module.css
.container {
background-color: #f0f0f0;
padding: 20px;
}
// component.js
import styles from './styles.module.css' assert { type: 'css' };
const element = document.createElement('div');
element.className = styles.container;
document.body.appendChild(element);
์ด ๊ฒฝ์ฐ, `assert { type: 'css' }` ์ ์ ๊ฐ์ ธ์จ ๋ชจ๋์ด CSS ํ์ผ์์ ๋ณด์ฅํฉ๋๋ค. ๋ง์ฝ ํ์ผ์ด ์ ํจํ CSS ํ์ผ์ด ์๋๋ผ๋ฉด, ์์ง์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ ์ ์ฌ์ ์ธ ์คํ์ผ๋ง ๋ฌธ์ ๋ ๋ฐํ์ ์์ธ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
3. ํ ์คํธ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
Import assertion์ ํ ์คํธ ํ์ผ์ ์ ํ์ ๊ฒ์ฆํ๋ ๋ฐ์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค:
// data.txt
This is some sample data.
// app.js
import data from './data.txt' assert { type: 'text' };
console.log(data);
์ฌ๊ธฐ์ `assert { type: 'text' }` ์ ์ ๊ฐ์ ธ์จ ๋ชจ๋์ด ํ ์คํธ ํ์ผ์์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ํ ์คํธ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๊ณ ํ์ผ์ ์ ํจํ ํ ์คํธ ๋ด์ฉ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๊ณ ์ถ์ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
4. HTML ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
ํํ์ง๋ ์์ง๋ง, import assertion์ HTML ํ์ผ๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ค๋ง, ์ค์ฉ์ฑ์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ก๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํต์ฌ์ ๋ก๋๊ฐ HTML ํ์ผ์ ๋ชจ๋๋ก ์ทจ๊ธํ๋๋ก(์: HTML ๋ด์ฉ์ ๋ฌธ์์ด๋ก ๋ฐํ) ํ๋ ๊ฒ์ ๋๋ค.
// template.html
<div class="container">
<h1>Hello, World!</h1>
</div>
// app.js
import template from './template.html' assert { type: 'html' };
const element = document.createElement('div');
element.innerHTML = template;
document.body.appendChild(element);
์ ์ ํ ์ค์ (๋ณดํต Webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋ฒ๋ค๋ฌ๋ฅผ ํฌํจ)์ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ด ์๋ํ ์ ์์ต๋๋ค. `assert { type: 'html' }`์ ์์ง(๋๋ ๋ ์ ํํ๊ฒ๋ ๋ฒ๋ค๋ฌ)์๊ฒ ์ด ํ์ผ์ด HTML๋ก ์ทจ๊ธ๋์ด์ผ ํ๋ค๊ณ ์๋ ค์ค๋๋ค. ๋ง์ฝ ํ์ผ ํ์์ด ์๋ชป๋์๋ค๋ฉด, ๋ฒ๋ค๋ฌ๋ ๋น๋ ๊ณผ์ ์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค(์ด๋ ๋ณธ์ง์ ์ผ๋ก ์กฐ๊ธฐ ํ์ ์ฒดํน์ ๋๋ค).
Import Assertion ์ฌ์ฉ์ ์ด์
Import assertion ์ฌ์ฉ์ ์ด์ ์ ๋จ์ํ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ ๋์ด์ญ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ข์ ์ฝ๋๋ฒ ์ด์ค์ ๊ธฐ์ฌํฉ๋๋ค:
- ์ฝ๋ ๋ช ํ์ฑ ํฅ์: Import assertion์ ๊ฐ ๋ชจ๋์ ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ๋ํ๋ด๋ ๋ฌธ์ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ผ๋ฉฐ, ์ฝ๋๋ฅผ ์ ์ง๋ณด์ํ๋ ๋ฐ ํ์ํ ์ธ์ง ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ์ธ์ง ๋ถํ ๊ฐ์: ์์๋๋ ๋ชจ๋ ํ์ ์ ๋ช ์์ ์ผ๋ก ๋ง๋ฆ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ ๊ฐ์ ธ์จ ๋ชจ๋์ ํ์ ์ ๋จธ๋ฆฟ์์ผ๋ก ์ถ์ ํ๋ ๋์ ์ฝ๋์ ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ฆฌํฉํ ๋ง ๊ฐํ: ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ ๋, import assertion์ ์์ ๋ง์ ์ ๊ณตํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์น ์๊ฒ ํ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ง์ฝ ๋ฆฌํฉํ ๋ง์ด import assertion์ ๋ช ์๋ ํ์ ๊ณ์ฝ์ ์๋ฐํ๋ฉด, ์์ง์ ์ฆ์ ์ด๋ฅผ ์๋ ค์ค๋๋ค.
- ๋ ๋์ ํ์ : Import assertion์ ๋ชจ๋์ ์์ ํ์ ์ ๋ช ํํ๊ณ ๋ชจํธํ์ง ์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์ ๊ฐ์ ํ์ ์ ์ด์งํฉ๋๋ค. ์ด๋ ์คํด์ ํตํฉ ๋ฌธ์ ์ ์ํ์ ์ค์ ๋๋ค.
- ์์ ๊ฐ ์ฆ๊ฐ: ์ฝ๋๊ฐ import assertion ํ์ ์ฒดํน์ผ๋ก ๋ณดํธ๋๊ณ ์๋ค๋ ๊ฒ์ ์๋ฉด ์ฝ๋์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ํด ๋ ํฐ ์์ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ ๋ณต์กํ๊ฑฐ๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
ํ์ฌ ์ํ ๋ฐ ๋ธ๋ผ์ฐ์ ์ง์
Import assertion์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๊ต์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ ์์ง ๋ฐ์ ์ค์ ๋๋ค. ์ด ๊ธ์ ์ฐ๋ ์์ ์์, ์ง์ ๋ฒ์๋ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ฐ์ฅ ์ต์ ์ ๋ณด๋ ์ต์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ํ(์: MDN Web Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#browser_compatibility)๋ฅผ ํ์ธํ์ธ์. ์ด ๊ธฐ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ณด๋ค๋ Node.js ํ๊ฒฝ์์ ๋ ์ฑ์ํ์ง๋ง, ๋ธ๋ผ์ฐ์ ์ฑํ๋ฅ ๋ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ, Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ import assertion์ด ํฌํจ๋ ์ฝ๋๋ฅผ ๊ตฌํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ๊ณผ ํธํ๋๋ ์ฝ๋๋ก ๋ณํํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Babel์ import assertion ์ง์์ ์ ์ ํ์ ๊ฒ์ฆ์ด ์๋ ๋ฐํ์ ๊ฒ์ฌ๋ฅผ ํฌํจํ ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
ํด๋ฆฌํ๊ณผ ํธ๋์คํ์ผ๋ฌ
Import assertion์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ด ์์ง ๋ณดํธ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์, ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํด๋ฆฌํ์ด๋ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ด ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์๋์ง ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ํธ๋์คํ์ผ๋ฌ: Babel๊ณผ ๊ฐ์ ๋๊ตฌ๋ import assertion์ด ํฌํจ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๋ก๋ฉ ๋ฐ ํ์ ๊ฒ์ฆ์ ์ํ ๋์ฒด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ ๋๋ฑํ ์ฝ๋๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋๋ผ๋ ์ฝ๋์์ import assertion์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํธ๋์คํ์ผ๋ ์ฝ๋๊ฐ ์๋ณธ ์ฝ๋์ ๋์ผํ ์์ค์ ์ ์ ํ์ ์ฒดํน์ ์ ๊ณตํ์ง ์์ ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
- ํด๋ฆฌํ: ํด๋ฆฌํ์ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฝ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฝ๋ ์กฐ๊ฐ์ ๋๋ค. Import assertion์ ๋ํ ์ง์ ์ ์ธ ํด๋ฆฌํ์ ๋ง๋๋ ๊ฒ์ ์ด๋ ต์ง๋ง, ๋ชจ๋ ๋ก๋ฉ ๋ฐ ํ์ ์ฒดํน๊ณผ ๊ฐ์ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ํด๋ฆฌํ์ ์ฌ์ฉํ์ฌ ์ ์ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
Import Assertion ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Import assertion์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์:
- ๋ช ์์ ์ผ๋ก ์์ฑํ์ธ์: ํญ์ `assert` ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ ๋ชจ๋์ ์์ ํ์ ์ ๋ช ์ํ์ธ์. ์ด๋ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ณ ํ์ ์ค๋ฅ์ ์ํ์ ์ค์ ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ํ์ ์ ์ ํํ์ธ์: ๊ฐ ๋ชจ๋์ ๊ฐ์ฅ ์ ํฉํ ํ์ ์ ์ ํํ์ธ์. ์ผ๋ฐ์ ์ธ ํ์ ์๋ `json`, `css`, `text`, `html`์ด ํฌํจ๋ฉ๋๋ค.
- ์ฒ ์ ํ๊ฒ ํ ์คํธํ์ธ์: ๋ค์ํ ๋ชจ๋ ํ์ ๊ณผ ๋ฐ์ดํฐ๋ก ์ฝ๋๋ฅผ ํ ์คํธํ์ฌ import assertion์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ธ์.
- ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ์ธ์: ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ import assertion์ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฐ์ ํ์ธ์.
- ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ์ธ์: ์ต์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ธํ๊ณ ํ์์ ๋ฐ๋ผ ํด๋ฆฌํ์ด๋ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ ๋ฐ์ดํธํ์ธ์.
- ์ฑ๋ฅ์ ๊ณ ๋ คํ์ธ์: Import assertion์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ ๋ฏธ๋ฏธํ ์ํฅ์ ๋ฏธ์น์ง๋ง, ๋งค์ฐ ํฐ ๋ชจ๋๋ก ์์ ํ ๋๋ ์ ์ฌ์ ์ธ ์ค๋ฒํค๋์ ์ ์ํ์ธ์.
- ์ ์ฒด์ ์ผ๋ก ์๊ฐํ์ธ์: ๋ชจ๋ ํ์ ์ ์ ์ํ ๋ ๊ตญ์ ํ ๋ฐ ํ์งํ์ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ์ธ์. ์๋ฅผ ๋ค์ด, ๋ฒ์ญ๋ ๋ฌธ์์ด์ด ํฌํจ๋ JSON ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ, ํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ฝ๋ฉ(์: UTF-8)๋์๋์ง, ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ธ์ฝ๋ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ํด์ํ๋์ง ํ์ธํ์ธ์.
๊ณ ๊ธ ์ฌ์ฉ ์ฌ๋ก
Import assertion์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ํ์ ์ฒดํน์ด์ง๋ง, ์ ์ฉํ ์ ์๋ ๋ค๋ฅธ ๊ณ ๊ธ ์๋๋ฆฌ์ค๋ ์์ต๋๋ค:
- ๋ฒ์ ํ์ธ: ์ ์ฌ์ ์ผ๋ก import assertion์ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ๋ฒ์ ์ ํ์ธํ ์ ์์ง๋ง, ์ด๋ ๋ ์ผ๋ฐ์ ์ด๋ฉฐ ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ๋ก๋๊ฐ ํ์ํฉ๋๋ค.
- ํ๊ฒฝ๋ณ ๊ตฌ์ฑ: ์กฐ๊ฑด๋ถ import์ ๊ฒฐํฉํ์ฌ import assertion์ ์ฌ์ฉํ์ฌ ํ๊ฒฝ(์: ๊ฐ๋ฐ, ํ๋ก๋์ )์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ตฌ์ฑ์ ๋ก๋ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ๋ก๋: ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ๋ก๋๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ, import assertion์ ์ฌ์ฉํ์ฌ ํน์ ๋ชจ๋ ํ์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ก๋์ ์ ๊ณตํ ์ ์์ต๋๋ค.
Import Assertion์ ๋ฏธ๋
Import assertion์ ์ธ์ด๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์์ ์ ์ ๋ ์ค์ํ ๋ถ๋ถ์ด ๋ ๊ฒ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ด ํฅ์๋๊ณ ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ด ๊ธฐ๋ฅ์ ์ฑํํจ์ ๋ฐ๋ผ, ์ด๋ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์ ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค. ํฅํ ๊ฐ๋ฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค:
- ๋ ํ์คํ๋ ํ์ ์ ์: ์๋ฐ์คํฌ๋ฆฝํธ ์ปค๋ฎค๋ํฐ๋ ์ผ๋ฐ์ ์ธ ๋ชจ๋ ํ์ ์ ๋ํด ๋ ํ์คํ๋ ํ์ ์ ์๋ฅผ ๊ฐ๋ฐํ์ฌ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ์ผ๊ด๋๊ฒ import assertion์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํ ์ ์์ต๋๋ค.
- ํ์ ์์คํ ๊ณผ์ ํตํฉ: Import assertion์ TypeScript์ ๊ฐ์ ํ์ ์์คํ ๊ณผ ํตํฉ๋์ด ํจ์ฌ ๋ ๊ฐ๋ ฅํ ํ์ ์ฒดํน ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ๊ฐ์ ๋ ๋๊ตฌ ์ง์: Import assertion์ ๋ํ ๋๊ตฌ ์ง์์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ์ ๋์ด ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฌ์์ง ๊ฒ์ ๋๋ค.
- ๋ ํํ๋ ฅ ์๋ Assertion: ํฅํ ECMAScript ํ์ค ๋ฒ์ ์์๋ ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ํ์ ๊ณผ ๋ด์ฉ์ ๋ํด ๋ ๋ณต์กํ ์ ์ฝ ์กฐ๊ฑด์ ์ง์ ํ ์ ์๋๋ก ํ๋ ๋ ํํ๋ ฅ ์๋ assertion ๋ฉ์ปค๋์ฆ์ ๋์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ import assertion ํ์ ์ฒดํน์ ์ฝ๋ ์ ๋ขฐ์ฑ, ์ ์ง๋ณด์์ฑ ๋ฐ ๋ณด์์ ํฅ์์ํค๋ ๋ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ ๋๋ค. ๋ชจ๋์ ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํจ์ผ๋ก์จ ๊ฐ๋ฐ ๊ณผ์ ์ด๊ธฐ์ ํ์ ์ค๋ฅ๋ฅผ ์ก์๋ด์ด ๋ฐํ์ ์์ธ์ ์ํ์ ์ค์ด๊ณ ์ฝ๋์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ ์์ง ๋ฐ์ ์ค์ด์ง๋ง, import assertion ์ฌ์ฉ์ ์ด์ ์ ๋ถ๋ช ํฉ๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ์ต์ ๊ฐ๋ฐ ๋ํฅ์ ํ์ ํจ์ผ๋ก์จ, ์ด ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ๋ขฐํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Import assertion์ ์์ ํ๋ฆ์ ํตํฉํ ๋, ์ด๊ฒ์ด ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ ๋๊ตฌ์์ ๊ธฐ์ตํ์ธ์. ์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ฒ ์ ํ ํ ์คํธ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๊ฐ์ ๋ค๋ฅธ ์ข์ ์ฝ๋ฉ ๊ดํ๊ณผ ๊ฒฐํฉํ์ธ์. Import assertion์ ์์ฉํ๋ ๊ฒ์ ๋ ํ์ -์ธ์ดํํ๊ณ ์์ธก ๊ฐ๋ฅํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฏธ๋๋ฅผ ํฅํ ํ ๊ฑธ์์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์ ๊ธ๋ก๋ฒํ ํน์ฑ์ ์ฝ๋๊ฐ ์ข ์ข ๋ค๋ฅธ ํ๊ณผ ์กฐ์ง ๊ฐ์ ๊ณต์ ๋๊ณ ์ฌ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Import assertion์ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ๋ฉด ๋ชจ๋์ด ์ฌ์ฉ๋๋ ํ๊ฒฝ์ ๊ด๊ณ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ํด์๋๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ๋ชจ๋์ ํ์งํ๋ ์ฝํ ์ธ ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ ์๋ ๊ตญ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ํ ๋ ํนํ ์ค์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค๋๋ถํฐ import assertion์ ํ์ํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์์ ํฅ์๋ ๋ชจ๋ ๋ฌด๊ฒฐ์ฑ์ ์ด์ ์ ๊ฒฝํํด ๋ณด์ธ์!