Coding Diary

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜

Dong _ hwa 2023. 6. 4. 17:13

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์‹œ์ž‘ํ–ˆ๋˜ ๋™๋ฌผ์˜ ์ˆฒ ํ”„๋กœ์ ํŠธ๋ฅผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์—…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์™œ๋ƒ๋ฉด ์ด์ œ ๋ญ”๊ฐ€ ํŒŒ์ผ์ด js์ธ๊ฒŒ ์ต์ˆ™์ง€๊ฐ€ ์•Š์•„.... ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋„ ์ž˜ ๋ชปํ•˜๊ธฐ๋„ ํ•˜๊ณ  ํ•ด์„œ

์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜จ์ „ํžˆ ๊ณต๋ถ€์šฉ์ธ๋ฐ ์ต์ˆ™ํ•œ(?) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฑด! ๊ณต๋ถ€๊ฐ€ ์•„๋ƒ! ํ•ด์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ...

๊ทธ๋Ÿฌ๋ฉด ์ผ๋‹จ ์ด๋ฏธ ๋งŒ๋“ค์—ˆ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค..

 

์ฐธ๊ณ  : https://steadily-worked.tistory.com/554

 

Typescript ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  • npm init -y (npm ์ดˆ๊ธฐํ™” ๋ช…๋ น์–ด)๋กœ package.json ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ
  • ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ npm i typescript -D ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•˜๊ธฐ
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์„ค์ • ํŒŒ์ผ tsconfig.json ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ๋ณธ๊ฐ’  ์ถ”๊ฐ€ํ•˜๊ธฐ
{
  "compilerOptions": {
    "allowJs": true,
    "target": "ES5",
    "outDir": "./dist",
    "moduleResolution": "Node",
    "lib": ["ES2015", "DOM", "DOM.Iterable"]
  },
  "include": ["./src/**/*"],
  "exclude": ["node_modules", "dist"]
}

์ด ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ํ•œ๋ฒˆ ๋‚ฌ๋‹ค. ๋ณ„๊ฑด ์•„๋‹ˆ์—ˆ์ง€๋งŒ

No inputs were found in config file '๊ฒฝ๋กœ/tsconfig.json'. Specified 'include' paths were '["./src/**/*"]' and 'exclude' paths were '["node_modules","dist"]'.

ํ”„๋กœ์ ํŠธ ๋‚ด์— ์ƒ์„ฑํ–ˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ ๋ฐ”๊นฅ ํด๋”์— ์ƒ์„ฑ์„ํ•ด์„œ, tsํŒŒ์ผ์ด ํ•˜๋‚˜๋„ ์—†์–ด์„œ ์ƒ๊ธด ์˜ค๋ฅ˜์˜€๋‹ค.

 

 

 

js ํ™•์žฅ์ž๋ฅผ ์ „๋ถ€ ts๋กœ

์ด์ œ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค..

 

 

 

์—ฌ๊ธฐ์„œ ์ƒ๊ธด ์˜ค๋ฅ˜  1

Cannot use JSX unless the '--jsx' flag is provided.

vscode ๋‚ด ๋ฒ„์ „์ด ๋‚ด ๋ฒ„์ „๊ณผ ๋‹ฌ๋ผ์„œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜์ด๋‹ค.

tsconfig.json ๋‚ด compilerOptions ์— "jsx": "preserve" ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด๋œ๋‹ค

 

 

villager.tsx

interface Villagers {
  name: string;
  gender: string;
  image_url: string;
  species: string;
}


function villagers({ name, gender, image_url, species }: Villagers) {
  return (
  
  ...

 

interface๋ฅผ ์ด์šฉํ•ด์„œ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ๋‚ฌ๋”๋‹ˆ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค!

 

 

์—ฌ๊ธฐ์„œ ์ƒ๊ธด ์˜ค๋ฅ˜  2

๋ฌธ์ œ๋Š” ์ด ์นœ๊ตฌ์˜€๋Š”๋ฐ, ๋„ํ†ต ์›์ธ์ด ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค ใ… .ใ… 

์—๋Ÿฌ ํŒŒํ‹ฐ... ํ•˜๋‚˜ํ•˜๋‚˜ ํ•ด๊ฒฐํ•ด๋ณด์ž ใ… ใ… 

 

'App' refers to a value, but is being used as a type here. Did you mean 'typeof App'?

App.test.tsํŒŒ์ผ์„ tsx ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์คฌ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ts ๋กœ ๋งŒ๋“ค์–ด์ค˜์„œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜์ด๋‹ค. tsx๋กœ ๋ฐ”๊ฟ”์คฌ๋”๋‹ˆ ์ž˜ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค!