์ค์ ์ค๋ฌด์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ง ์ฌ์ฉํ์ง๋ ์๋๋ค.Typescript๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ง ์ฌ์ฉํ์ ๋๋ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๋ค๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ์ด๋์ ํ์ด๋์ฌ์ง ๋ชจ๋ฅด๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ๊ทธ๋์ ์ด๋์ ๋ ๊ท๋ชจ์ ์๋น์ค๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ๋จ์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ํ์
์คํฌ๋ฆฝํธ๋ ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋๋ค. ์ด์ ์ด ํ์
์คํฌ๋ฆฝํธ์ ๋ํด์ ์์๋ณด์.
Typescript๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์ ๊ฐ์ ์ํค๋ ์ธ์ด์ด๋ค
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๋ค๋ฅธ ์ธ์ด๋ค์ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ๋ ์์๋ผ๋ฉด ๋ค๋ฅธ ํ์ ์ด ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ด๊ฒ์ ์ ์ดํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ํ์
์คํฌ๋ฆฝํธ์ด๋ค.
ํฐ ์๋น์ค๋ฅผ ๋ง๋ค๊ฒ ๋๋ค๋ฉด ์๋ง์ ์ฌ๋๋ค์ด ์์ค์ฝ๋๋ฅผ ์์ ํ ํ
๋ฐ ์๋ฌ๋ค์ด ๊ณ์ ๋์ฌํ
๋ฐ ์ด๋ฅผ ์์ ์ ์ด๊ฒ ํด์ฃผ๊ธฐ ์ํด์ vscode ์์ฒด์์ ๋ง์์ค ์ ์๋ค. ์ถ๊ฐ์ ์ผ๋ก ์
๋ ฅํ ๊ฒ ๋ง์ง๋ง ๊ทธ๋๋ ํ์
์คํฌ๋ฆฝํธ๋ ํ์๋ค.
์ค์ ์ฝ๋๋ฅผ ์คํํ ๋๋ ํ์
์คํฌ๋ฆฝํธ๋ ์์ด์ง๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ธ ๋ณ์๋ค์ ์ด๋ ๊ฒ ์ ์ธํด์ฃผ๋ฉด ๋๋ค.
๊ฐ์ฒด๋ Interface๋ผ๊ณ ํด์ ๊ฐ์ฒด ํ์
์ ๋ฐ๋ก ์ง์ ํด์ค๋ค. ์ด ํ์
์ ์ด๋ฆ์ ์ง๊ธฐ ๋๋ฆ์ด์ง๋ง ๊ด๋ก์ Interface์ I์ ๋ณ์๋ช
์ ํฉ์ณ์ ์ฌ์ฉํ๋ค.
์ฐ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ๊ณ ์ค์ ํ์ผ์ ๋ง๋ค์ด ์ค์ผํ๋ค.
https://www.typescriptlang.org/download
yarn add typescript --dev
--dev๋ก ์ค์นํ๋ฉด devDependencies๋ก vscode์์ ๊ฐ๋ฐ์ ์ํ ์ฉ๋๋ก ์ค์นํจ
tsconfig.json
ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
์์ ๋ด์ฉ๋ค์ ๋ฃ์ด์ค์ด์ผ ํ์ง๋ง next.js
๋ฅผ ์ฐ๋ฉด yarn dev
๋ง ํด๋ ์ด ํ์ผ์ด ์๋์ผ๋ก ์ธํ
๋๋ค.
1. yarn dev
2. yarn add --dev @types/node
yarn dev๋ฅผ ํ๋ฉด ์ ๋ฐ ํ๋ฉด์ด ๋ฐ ๊ฒ์ด๋ค.
ํ๋ ๊ธ์จ๋ฅผ ๋ณต๋ถ ํ์.
https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#handbook-content
next.js
๋ฅผ ์ฐ์ง ์๋๋ค๋ฉด ์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์.
๋ค์์ฒ๋ผ tsconfig.json
์ด ์ฑ์์ง๋ฉด ์ฑ๊ณต์ด๋ค!
๋ด tsconfig.json
ํ์ผ์ด๋ค.
"skipLibCheck" - ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์
์ ๋๊ธธ ๊ฒ์ธ๊ฐ
"strict": true - ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ
"include" - ์ด๋ค ํ์ผ์ ํฌํจํ ๊ฒ์ธ๊ฐ
์ด์ ํ์ผ ํ์ฅ์๋ช
์ ts
, tsx
๋ก ๋ฐ๊ฟ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ฆํด์ค ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ x
๋ eXtensible Markup Language ํ์ฅ๊ฐ๋ฅํ ๋งํฌ์
๋ญ๊ท์ง๋ฅผ ์๋ฏธํ๋ XML
์ x๋ฅผ ์๋ฏธํ๋ค. ์ด๋ HTML
์ด๋ ๋๊ฐ์ด ๋ง๋ ์ธ์ด์ด๋ค. ์ด๋ฆ์ ๊ฐ์ง๋ง ์๋ํ๋ ๋ฐฉ์์ ๋ค๋ฅด๋ค. ์๋ ์๋ XMLํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณค ํ๋ค.
์ด XML
์ด ์๋ ํ์ผ์ tsx
, ์๋ ํ์ผ์ ts
๋ก ๊ณ ์น๋ฉด ๋๋ค.
์๋์ฒ๋ผ ํ์ฅ์ ๋ช
๋ง ๋ฐ๊ฟ๋ tsconfig.json
์์ ์ด ํ์ผ์ ์ฝ๊ณ ํ์
์ ์ถ๋ก ํด์ ์๋ฌ๋ฅผ ์๋์ผ๋ก ๋์์ค๋ค.
์ง์ ํ์ ์ ๋ช ์ ํด์ค ์๋ ์๋ค.
number[]
- ์ซ์๋ค์ด ๋ค์ด๊ฐ๋ ๋ฐฐ์ด
(number | string)[]
- ์ซ์๋ ๋ฌธ์๋ค์ด ๋ค์ด๊ฐ๋ ๋ฐฐ์ด
|
, &
- ํ์
์คํธ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๋๋
๊ณผ ๊ทธ๋ฆฌ๊ณ
?
: ์์ด๋ ๋๊ณ ์์ด๋ ๋๋ค
?
๊ฐ ์์ผ๋ฉด ๋ฐ๋์ ์์ด์ผ ํ๋ค.ํจ์์ ๊ฒฝ์ฐ๋ ๋ฐ๋ ์ชฝ์์ ํ์ ์ ๊ฒฐ์ ํ๋ค.
ํจ์ ์์ฒด์ ํ์
์ () => void
์ด๊ณ , return ํด์ฃผ๋ ๊ฒ์ด ์์ผ๋ฉด void ์จ์ฃผ๋ฉด ๋๋ค.
๋งค๊ฐ๋ณ์๊ฐ ์๋ค๋ฉด ๋งค๊ฐ๋ณ์ ํ์ ๋ ์ ์ด์ค์ผ ํ๋ค.
onChange - ChangeEvent<HTMLInputElement>
ํ์ ๊ณผ ์ค์ ํ๊ทธ์ ์ข ๋ฅ๋ฅผ ๋ง์ถฐ์ค์ผ ํ๋ค.
์คํ์ผ์ ํ์
์ฃผ๊ธฐ
๊ฐ์ฒด์ ํ์
์ฃผ๊ธฐ
if(event.target instanceof Element)
์ถ๊ฐํด์ฃผ๊ธฐ๋ง์ฝ์ event.target์ด ํด๋นํ๋ ํ๊ทธ์ ์์์ด๋ผ๋ฉด
ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ผ๋ก ๋ค์ด๊ฐ ์ ์๋ ๊ฐ๋ค์ ๋ฏธ๋ฆฌ ์๋ ค์ค๋ค.