๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š FrontEnd -Study/TypeScript5

TypeScript React์—์„œ useRef์˜ 3๊ฐ€์ง€ ์ •์˜ โœ… UseRef? useRef๋Š” React Hook์˜ ์ผ์ข…์œผ๋กœ, ์ธ์ž๋กœ ๋„˜์–ด์˜จ ์ดˆ๊นƒ๊ฐ’์„ useRef ๊ฐ์ฒด์˜ .current ํ”„๋กœํผํ‹ฐ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. DOM ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๊ฐ€๋ฆฌ์ผœ์„œ ๋‚ด๋ถ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ focus() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ๋•Œ์— ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. (์ด๋Š” useRef๊ฐ€ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ด๋ฅผ ์•Œ๋ ค์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. .current ํ”„๋กœํ”ผํ„ฐ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ , ๋”ฐ๋ผ์„œ ๋กœ์ปฌ ๋ณ€์ˆ˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ๐Ÿ“ฆ ๋ณธ์งˆ์ ์œผ๋กœ useRef๋Š” .current ํ”„๋กœํผํ‹ฐ์— ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” “์ƒ์ž”์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋ง์€ useRef์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์ธ MutableRefObject์™€.. 2024. 1. 24.
[TS] ์ง€์ •๋œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์— ๋Œ€ํ•œ ~์œ ํšจํ•œ ํ‚ค์ธ์ง€ TypeScript๊ฐ€ ์ถ”๋ก ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Element implicitly has an 'any' type because expression of type 'keyof AboutSecondPageDetailType' can't be used to index type '{ agency: string; date: string; subtitle: string; detail: string[]; } | { agency: string; date: string; subtitle: string; detail: string[]; } | { agency: string; date: string; detail: string[]; }'. Property 'education' does not exist on type '{ agency: string; date: stri.. 2024. 1. 3.
[typescript ์—ด๊ฑฐํ˜•,์ธํ„ฐํŽ˜์ด์Šค,type,class] ์—ด๊ฑฐํ˜• enum NumberColor { RED = 0, GREEN = 1, BLUE = 2, }; enum StringColor { RED = 'red', GREEN = 'green', BLUE = 'blue', }; ์ธํ„ฐํŽ˜์ด์Šค // Todo ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. interface Todo { id: number; content: string; isDone: boolean; } // Todo ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” todos๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค. let todos: Todo[] = []; // Todo ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” addTodo๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค. function addTodo(todo: Todo) { todos = [...todos, todo]; } // Todo ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” .. 2023. 5. 31.
[typescript ํƒ€์ž…] 1. ๊ธฐ๋ณธ ํƒ€์ž… interface kimcoding { name: string; age: number; } interface parhacker { name: string; age: string; } function printAge(person: kimcoding | parhacker) { let age; if (typeof person.age === 'number' || typeof person.age === 'string') { age = person.age.toString(); } console.log(`${person.name}์˜ ๋‚˜์ด๋Š” ${age}์‚ด ์ž…๋‹ˆ๋‹ค.`); } const kimcoding = { name: '๊น€์ฝ”๋”ฉ', age: 30, }; const parhacker = { name: '๋ฐ•.. 2023. 5. 30.
[typescript ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•] TypeScript ํ™˜๊ฒฝ ๊ตฌ์„ฑ 1. ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. mkdir (ํด๋”๋ช…) cd (ํด๋”๋ช…) 2. ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํด๋” ์•ˆ์œผ๋กœ ์ด๋™ํ•œ ๋’ค, ํ„ฐ๋ฏธ๋„์—์„œ npm init -y ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ฉ๋‹ˆ๋‹ค. npm init : ์ƒˆ๋กœ์šด Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ -y : ๋ชจ๋“  ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’์ธ "yes"๋กœ ์‘๋‹ตํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ์—†์ด ๋น ๋ฅด๊ฒŒ ์ดˆ๊ธฐํ™”๋œ package.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3. ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ npm ์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์œผ๋ฏ€๋กœ, ์ด์ œ TypeScript๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. npm install typescript --save-dev npm install [ํŒจํ‚ค์ง€๋ช…] --save-dev : package.json ํŒŒ.. 2023. 5. 30.
728x90