๐Ÿค” ๋ฌธ์ œ

๐ŸŒˆ ํ•ด๊ฒฐ ๊ณผ์ •

  1. ๋™๋ฃŒ์˜ ๋„์›€

    ์บ ํผ1 : โ€œ๊ฒฝ์ผ๋‹˜ youtube ํƒœ๊ทธ ์ฒ˜๋ฆฌ์—์„œ ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋‚˜๋˜ ์ด์œ ๊ฐ€ react-youtube ํŒจํ‚ค์ง€ ์ž์ฒด๊ฐ€ commonJS ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ์–ด์„œ, ํƒœ๊ทธ๋ฅผ module.export๋ฐฉ์‹์œผ๋กœ๋งŒ ๋‚ด๋ณด๋‚ด๊ฐ€์ง€๊ณ  es๋ชจ๋“ˆํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์ด ๋งž์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์šฅโ€

  2. ์ ์šฉ ๋ฐ ํ•ด๊ฒฐ

    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"],
    }
    
  3. ์ •๋ฆฌ

    "allowSyntheticDefaultImports": true,ย ย "esModuleInterop": true,

    ๊ฒฐ๋ก : ๋‘˜ ๋‹ค ๊ฐ™์€ ๊ธฐ๋Šฅ์ธ๋ฐ ํ˜ธํ™˜์„ฑ์ด ์ข€ ๋” ์ข‹์€ย esModuleInteropย ์Šน!

  4. ์ด์œ ๋ฅผ ๋‹ค์‹œ ์ฐพ์•„๋ด„

    ๊ฒฝ์ผ๋‹˜ youtube ํƒœ๊ทธ ์ฒ˜๋ฆฌ์—์„œ ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋‚˜๋˜ ์ด์œ ๊ฐ€ react-youtube ํŒจํ‚ค์ง€ ์ž์ฒด๊ฐ€ commonJS ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ์–ด์„œ, ํƒœ๊ทธ๋ฅผ module.export๋ฐฉ์‹์œผ๋กœ๋งŒ ๋‚ด๋ณด๋‚ด๊ฐ€์ง€๊ณ  es๋ชจ๋“ˆํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์ด ๋งž์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์šฅ

    '๊ทผ๋ฐ ์š”์ฆ˜์— es ๋ชจ๋“ˆ๋ฅผ ์ง€์›์•ˆํ•˜๋Š”๊ฒŒ ์žˆ๋‚˜?'๋ผ๋Š” ์ƒ๊ฐ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค.

    1. ์ผ๋‹จ ๊นƒํ—ˆ๋ธŒ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋‘˜ ๋‹ค ์ง€์›์„ ํ•œ๋‹ค๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.

      image_720.png

    2. ๊ทธ๋Ÿผ ์™œย esModuleInteropย ์†์„ฑ์—†์ด๋Š” ์•ˆ๋์ง€?

    3. TypeScript๊ฐ€ ํŠน์ •ํ•œ ์กฐ๊ฑด์—์„œ commonJS ํ˜•์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ TypeScript๊ฐ€ default import ๋ฌธ๋ฒ•์„ ์ œ๋Œ€๋กœ ํ•ด์„ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—ย esModuleInteropย ์˜ต์…˜์ด ํ•„์š”ํ–ˆ๋˜ ๊ฒƒ.