typescript

ยท TIL/etc.
์ง„์งœ ์—ด๋ฐ›๊ฒŒ๋„... ํ‹ฐ์Šคํ† ๋ฆฌ ์ž„์‹œ์ €์žฅ ์˜ค๋ฅ˜ ๋•Œ๋ฌธ์— %_% ํ•œ ๋ฒˆ ๋‹ค ๋‚ ๋ฆฌ๊ณ  ๋‹ค์‹œ ์“ด๋‹ค... ์ง„์งœ ๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด ์—ด๋ฐ›์ง€๋งŒ..!!!! ๊ทธ๋ž˜๋„ ์–ด๋–ป๊ฒŒ ํ•ด ๋‹ค์‹œ ์จ์•ผ์ง€ ใ… .,ใ…  ๋‚˜๋Š” ๋‘๋ฒˆ์งธ์“ฐ๋Š”๊ฑฐ์ง€๋งŒ ์ฝ๋Š” ์‚ฌ๋žŒ์€ ์ฒ˜์Œ์ด๋‹ˆ๊นŒ ์ฒ˜์Œ์ฒ˜๋Ÿผ ์จ์•ผํ•ด.... ์ง„์ •ํ•ด..... ๋ถ€๊ธ€๋ถ€๊ธ€ ์ผ๋‹จ ๋จธ์“ฑํ•˜๊ฒŒ๋„ ๋ฐ”๋กœ ์ „ ๊ฒŒ์‹œ๊ธ€์— 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 ์ด๋ฆ„ ..
Dong _ hwa
'typescript' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก