์ง์ง ์ด๋ฐ๊ฒ๋... ํฐ์คํ ๋ฆฌ ์์์ ์ฅ ์ค๋ฅ ๋๋ฌธ์ %_% ํ ๋ฒ ๋ค ๋ ๋ฆฌ๊ณ ๋ค์ ์ด๋ค... ์ง์ง ๋๋ฌด๋๋ฌด๋๋ฌด ์ด๋ฐ์ง๋ง..!!!! ๊ทธ๋๋ ์ด๋ป๊ฒ ํด ๋ค์ ์จ์ผ์ง ใ
.,ใ
๋๋ ๋๋ฒ์งธ์ฐ๋๊ฑฐ์ง๋ง ์ฝ๋ ์ฌ๋์ ์ฒ์์ด๋๊น ์ฒ์์ฒ๋ผ ์จ์ผํด.... ์ง์ ํด..... ๋ถ๊ธ๋ถ๊ธ ์ผ๋จ ๋จธ์ฑํ๊ฒ๋ ๋ฐ๋ก ์ ๊ฒ์๊ธ์ chakra ui ๊ฐ ์ข๋ค๋ฉฐ ๊ธ์ ์ผ์ผ๋, (๊ทธ๋๋ ์์ผ๋ก ์ด์ ์ ํ๋ ๊ฒ๋ค์ ์ฐ๊ธด ํ ๊ฒ์.. ์ฐจํฌ๋ผ ์ข์์ฌ) ์๋ก์ด ํ๋ก์ ํธ์์ SSR ๋ฌธ์ ๋ก chakra๋ฅผ ์ฐ์ง ๋ชปํ๊ณ ์ด๋ฐ์ ๋ฐ ์ด์ ๋ก tailwind๋ฅผ ์ฐ๊ธฐ๋ก ํ์๋ค. SSR(Server Side Rendering): ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง์ ์ ์ํ์ ๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์๊ฒ ๋๋๋ง๋ HTML์ ์๋ตํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ๋ก ๋๋๋งํ ์ ์๊ฒํ๋ค. ๊ทธ ํ CSR๊ณผ ๋์ผํ๊ฒ..
npx create-react-app --template typescript Kakao Developer ๋ฑ๋กํ๊ธฐ ๊ฐ๋ฐ์ ์ดํ๋ฆฌ์ผ์ด์
๋ฑ๋กํ๊ธฐ : https://developers.kakao.com/console/app ์ฑ ํค ์ป๊ธฐ '๋ด ์ดํ๋ฆฌ์ผ์ด์
' ์ ๋ค์ด๊ฐ๋ฉด ํค๊ฐ ์ญ ๋์ค๋๋ฐ ๊ฑฐ๊ธฐ์ Javascript๋ฅผ ์ ํํ๋ค. ์ฌ๊ธฐ ๋ค์ด์๋ ํค๋ฅผ, index.html ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค public / index.html {}๋ถ๋ถ์ {}๋ ์ ์ธํ๊ณ ~~~ ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค! '.env' ๋ก ์ค์ ํ๊ธฐ ๋์ ์์คํ key๋ฅผ html์ ๋
๋ค ๋ฐ์ง ์๊ณ ๋ฐ๋ก ๋นผ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค .env REACT_APP_KAKAO_MAP_KEY=๋ด๊ฐ ๋ฐ๊ธ๋ฐ์ KEY index.html ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ ๋ฃ์ด์ฃผ์๋ค %REACT_APP..
์ค์น ๋คํฌ๋ชจ๋๋ ๊ผญ ํ๋ก์ ํธ ์์์์ ๊ณ ๋ คํด์ฃผ๊ธฐ๋ก ํ์ ํ์
์คํฌ๋ฆฝํธ + ๋ฆฌ์กํธ ์ฑ๊ณผ ์คํ์ผ ์ปดํฌ๋ํธ ์ค์นํ๊ธฐ npx create-react-app my-app --template typescript npm i @types/styled-components ๋คํฌํ
๋ง ๋ง๋ค๊ธฐ ๐ GlobalStyles.ts import { createGlobalStyle } from "styled-components"; import reset from "styled-reset"; export const GlobalStyle = createGlobalStyle` ${reset} * { margin: 0; padding: 0; box-sizing: border-box; } body, html { font-size: 16px; } ..
๋ง๋ค์ด ๋ณด๊ณ ์ถ์ ๊ฒ์ ์ธํฐ๋ท์์ ๋ฐ๊ฒฌํ๋๋ฐ, ๊ทธ๊ฒ class๋ก ๋ง๋ค์ด์ก๋ค๋ ๊ฒ๋ ๋ณด๊ณ ... ๋ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ฉด์ class ์๊ธด ์์ง๋ง ๋๋ ๋
์ ๋ด ๋๋ฃ๊ฐ ๋๊ธฐ์ ์์ง ๋ง์ด ์นํ์ง ์์ ๊ฑฐ ๊ฐ์ ์ค๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๊ฐ๋ ์ฌ์ด๊ฐ ๋์ด๋ณด๋ ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๊ณ๋ค์ธ... ๋ ๋ class ๊ธฐ๋ณธ ๋ฌธ๋ฒ class ์์ฑ class๋ฅผ ์ ์ธ๋ง ํด์ค๋ค๋ฉด class ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ๋ง๋ค ์ ์๋ค. class Champions { } let zoe = new Champions(); ์ด๊น๊ฐ ์ค์ Constructor ๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค. ์ฝ๊ฒ ๋งํด class๋ ๊ฐ์ฒด ์์ฑ๊ธฐ๋ผ๊ณ ๋ณผ ์ ์๋๋ฐ, ์ด๊ฒ ํต์ฌ์ด๋น class Champions { constructor (name, Release) { thi..
function ํจ์(x :number | string){ return x + 1 } ์ด๋ ๊ฒ ํจ์๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋ฌ๊ฐ ๋๋ค. ํ์
์คํฌ๋ฆฝํธ๋ ์ฌ๋ฌ ๊ฐ์ ํ์
์ ์ด์ฉํ ๋ ํ์
์ ํ์ ์ง์ด์ฃผ์ง ์์ผ๋ฉด ๊น๋ค๋ก์ด ํ์
์คํฌ๋ฆฝํธ๋ ์ค๋ฅ๋ฅผ ๋ด๊ธฐ ๋๋ฌธ์, narrowing์ ๊ผญ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ด ๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด narrowing์ด๋ assertion์ ์ด์ฉํ๋ ๊ฑด๋ฐ, assertion์ ๋ํ ๋ด์ฉ์ ์ ๋ฒ ์์ ๊ฒ์๊ธ์ ์์ผ๋ ๊ธฐ๋ณธ์ ์ narrowing์ด๋ ์ ๋ฆฌํด๋ณด๋๋ก ํ์ฅ If ๋ฌธ function ํจ์(x: number | string){ if (typeof x === 'string'){ return x + '1'; } else { return x + 1; } } ์ ์ผ ์ง๊ด์ ์ด๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋น else {} ์ด๊ฑฐ..
์์ 1 ํด๋ฆฌ๋ํจ์( ['1', 2, '3'] ) ์ด๋ ๊ฒ ์ซ์์ ๋ฌธ์๊ฐ ์์ธ array๋ฅผ ์
๋ ฅํ๋ฉด [1,2,3] ์ด๋ ๊ฒ ์ซ์๋ก ๊น๋ํ๊ฒ ๋ณํ๋์ด ๋์ค๋ ํด๋ฆฌ๋ํจ์๋ฅผ ๋ง๋ค์ด์ค๊ณ ํ์
์ง์ function ํด๋ฆฌ๋ํจ์(x: (number | string)[]) { let ํด๋ฆฌ๋๋ฐฐ์ด: number[] = []; if (typeof x === "string") { ํด๋ฆฌ๋๋ฐฐ์ด.push(parseInt("x")); } else { ํด๋ฆฌ๋๋ฐฐ์ด.push(x); } } ๋ด๊ฐ ์ฒ์์ ๋ง๋ค์๋ ํจ์๋ ์ด๋ฌ๋ค. ๊ทผ๋ฐ ํด๋ฆฌ๋๋ฐฐ์ด ๋ณ์๋ฅผ ์ซ์๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์ด๋ก ์ง์ ํด์ฃผ๊ณ , if๋ฌธ์ ์ด์ฉํด ํด๋ฆฌ๋ํจ์์ ์์๋ค์ ํ๋์ฉ push ํด์ฃผ๋ ๊ฒ. (push : ๋ฐฐ์ด์ ์์ ์ถ๊ฐ / concat : ๋ฐฐ์ด๊ณผ ๋ฐฐ์ด ํฉ์นจ - ์๋ ์ด๊ฑธ ๋๊ฐ ์์ง๋..
์ค์น ๐ช npm install -g typescript npx create-react-app my-app --template typescript npm install --save typescript @types/node @types/react @types/react-dom @types/jest ๋ฌธ๋ฒ let ์ด๋ฆ :string = 'kim' ๋ณ์๋ฅผ ๋ง๋ค ๋ ํ์
์ง์ ํ๊ธฐ.๋ณ์๋ช
: ํ์
๋ช
์ด๋ ๊ฒ ์ด๋ค ํ์
์ผ๋ก ์ธ ์ ์๋ ๊ฒ๋ค์ string, number,boolean, bigint, null, undefined,[], {} ๋ฑ์ด ์์ต๋๋ค. let ์ด๋ฆ :string = 'kim'; ์ด๋ฆ = 123; ํ์
์ ์ง์ ํด๋์ผ๋ฉด ํ์
์ด ์๋์น ์๊ฒ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์๋ฌ๋ฉ์ธ์ง๋ฅผ ๋์์ค๋ค. ์ผ! ์ด๊ฑฐ ์ซ์์ผ! let ์ด๋ฆ ..