๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

TypeScript4

[Node.js] Prisma + MySQL ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„ ๋งŒ๋“ค๊ธฐ (MySQL Many to Many relationship using Prisma) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ์ฑ„ํŒ…์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ ์œ ์ €์™€ ์ฑ„ํŒ…๋ฐฉ์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์กฐ๊ธˆ ๋ณต์žกํ•œ ๊ฒŒ ์žˆ๋”๋ผ๊ตฌ์š”. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์ฑ„ํŒ…์•ฑ์„ ๋งŒ๋“œ๋Š”๋ฐ User๋Š” ์—ฌ๋Ÿฌ ์ฑ„ํŒ…๋ฐฉ์„ ๊ฐ€์ ธ์•ผ ํ•˜๊ณ , ์ฑ„ํŒ…๋ฐฉ์€ ์—ฌ๋Ÿฌ ์œ ์ €๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ์š”. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด๋‹น ๋ชจ๋ธ๊ณผ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Model User ์œ ์ € ๋ชจ๋ธ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. model User { id String @id @default(uuid()) name String @unique profileImage String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ChatRoom ์ฑ„ํŒ…๋ฐฉ ๋ชจ๋ธ์€ ์•„.. 2022. 8. 18.
[Node.js] Socket.io๋กœ Room ๊ตฌํ˜„ํ•˜๊ธฐ (feat. TypeScript) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Socket.io๋ฅผ ์ด์šฉํ•˜์—ฌ Room์„ ๊ตฌํ˜„ํ•ด ํŠน์ • Room์— ์žˆ๋Š” ์œ ์ €๋“ค์—๊ฒŒ๋งŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Install typescript, ts-node, express, socket.io ๋ฅผ ์„ค์น˜ํ•ด ์ค๋‹ˆ๋‹ค. npm install typescript npm install ts-node npm install express npm install socket.io npm install @types/express npm install @types/socket.io Model ๋ฉ”์„ธ์ง€ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. export interface Message { type: string; user: string; message: str.. 2022. 8. 10.
[TS] Extends์™€ Implements ์ฐจ์ด (Difference between extends and implements) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ TS์—์„œ ํด๋ž˜์Šค ์˜†์— extends์™€ implements๊ฐ€ ์ˆœ๊ฐ„ ํ—ท๊ฐˆ๋ ค์„œ ์ •ํ™•ํžˆ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Extends ์ƒ์†๋ฐ›๊ณ ์ž ํ•˜๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ. ์ฆ‰, extends์— ์›ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œํ•˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ์ธ์Šคํ„ด์Šค์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด "๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„ ๊ฑฐ ๋„ˆ ๋ง˜๋Œ€๋กœ ์จ๋„ ๋ผ~" ๋ผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. class Parent { public lastName: string = "An"; public speakKorean() { console.log("์•ˆ๋…•ํ•˜์„ธ์š”"); } public eatWithChopsticks() { co.. 2022. 4. 2.
[TS] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(TypeScript)๋ž€? (feat. ์จ์•ผํ•˜๋Š” ์ด์œ ) ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(TypeScript)๋ž€? ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹์ธ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ๊ฐœ๋ฐœ, ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—„๊ฒฉํ•œ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค. C#์˜ ๋ฆฌ๋“œ ์•„ํ‚คํ…ํŠธ์ด์ž ๋ธํŒŒ์ด, ํ„ฐ๋ณด ํŒŒ์Šค์นผ์˜ ์ฐฝ์‹œ์ž์ธ Anders Hejlsberg๊ฐ€ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ปค๋‹ค๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋œ ์–ธ์–ด์ด๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šˆํผ์…‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋„ ๋™์ž‘ํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์ž์‹ ์ด ์›ํ•˜๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋“  ์šด์˜ ์ฒด์ œ, ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์—.. 2022. 3. 8.
728x90
๋ฐ˜์‘ํ˜•