์ปดํฌ๋ํธ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋๋ฐ props ๊ฐ ์์ด์ ์๊ธฐ๋ ๋ฌธ์ ๋ก ํ๋จ.
๊ณต์๋ฌธ์์ ts ๊ทธ๋๋ก ํด๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
https://www.npmjs.com/package/react-youtube
๋๋ฃ์ ๋์
์บ ํผ1
: โ๊ฒฝ์ผ๋ youtube ํ๊ทธ ์ฒ๋ฆฌ์์ ๊ณ์ ์๋ฌ๊ฐ ๋๋ ์ด์ ๊ฐ react-youtube ํจํค์ง ์์ฒด๊ฐ commonJS ํ์์ผ๋ก ์์ฑ๋์ด์์ด์, ํ๊ทธ๋ฅผ module.export๋ฐฉ์์ผ๋ก๋ง ๋ด๋ณด๋ด๊ฐ์ง๊ณ es๋ชจ๋ํ๊ณ ์๊ตฌ์ฌํญ์ด ๋ง์ง ์์์ ์๊ธฐ๋ ๋ฌธ์ ์ผ ์๋ ์๋ค๊ณ ํ๋ค์ฅโ
์ ์ฉ ๋ฐ ํด๊ฒฐ
tscongif.json ํ์ผ์ "allowSyntheticDefaultImports": true,
ย or ย "esModuleInterop": true,
์ถ๊ฐ ์ ํด๊ฒฐ
{
"extends": "@packages/tsconfig/tsconfig.app.json",
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["./src/*"]
},
"esModuleInterop": true
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts"],
"exclude": ["node_modules", "dist"],
}
์ ๋ฆฌ
"allowSyntheticDefaultImports": true,
ย ย "esModuleInterop": true,
allowSyntheticDefaultImports
ย : ๋ ํฌ๊ด์ ์ธ ํธํ์ฑ ์ ๊ณต, require/export ๋ชจ๋ ๊ฐ์ esModuleInterop
ย : ์ ํ์ ํธํ์ฑ ์ ๊ณต (default import๋ง ํ์ฉ)๊ฒฐ๋ก : ๋ ๋ค ๊ฐ์ ๊ธฐ๋ฅ์ธ๋ฐ ํธํ์ฑ์ด ์ข ๋ ์ข์ย esModuleInterop
ย ์น!
์ด์ ๋ฅผ ๋ค์ ์ฐพ์๋ด
๊ฒฝ์ผ๋ youtube ํ๊ทธ ์ฒ๋ฆฌ์์ ๊ณ์ ์๋ฌ๊ฐ ๋๋ ์ด์ ๊ฐ react-youtube ํจํค์ง ์์ฒด๊ฐ commonJS ํ์์ผ๋ก ์์ฑ๋์ด์์ด์, ํ๊ทธ๋ฅผ module.export๋ฐฉ์์ผ๋ก๋ง ๋ด๋ณด๋ด๊ฐ์ง๊ณ es๋ชจ๋ํ๊ณ ์๊ตฌ์ฌํญ์ด ๋ง์ง ์์์ ์๊ธฐ๋ ๋ฌธ์ ์ผ ์๋ ์๋ค๊ณ ํ๋ค์ฅ
'๊ทผ๋ฐ ์์ฆ์ es ๋ชจ๋๋ฅผ ์ง์์ํ๋๊ฒ ์๋?'๋ผ๋ ์๊ฐ์ ๋ค์ ํ๋ฒ ์ฐพ์๋ดค์ต๋๋ค.
์ผ๋จ ๊นํ๋ธ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ ๋ค ์ง์์ ํ๋ค๊ณ ๋์ต๋๋ค.
๊ทธ๋ผ ์ย esModuleInterop
ย ์์ฑ์์ด๋ ์๋์ง?
TypeScript๊ฐ ํน์ ํ ์กฐ๊ฑด์์ commonJS ํ์์ผ๋ก ํจํค์ง๋ฅผ ์ฒ๋ฆฌํ ๋๊ฐ ์๋ค. ๊ทธ๋์ TypeScript๊ฐ default import ๋ฌธ๋ฒ์ ์ ๋๋ก ํด์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ย esModuleInterop
ย ์ต์
์ด ํ์ํ๋ ๊ฒ.