TypeScript 10

keyof typeof ์‚ฌ์šฉ๋ฒ•

keyof ํƒ€์ž… ์—ฐ์‚ฐ์žkeyof ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด ํƒ€์ž…์˜ ๋ชจ๋“  ํ‚ค๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ฌธ์ž์—ด ๋˜๋Š” ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด ์œ ๋‹ˆ์–ธ ํƒ€์ž…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.type Point = { x: number; y: number };type P = keyof Point; // P๋Š” "x" | "y" ํƒ€์ž…์ด ๋จ ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜: ๊ฐ์ฒด์˜ ๋™์ ์ธ ํ‚ค-๊ฐ’ ์Œ์— ๋Œ€ํ•œ ํƒ€์ž… ๊ทœ์น™์„ ์ •์˜ํ•˜๋Š” ๋ฌธ๋ฒ• ๋งŒ์•ฝ ๊ฐ์ฒด ํƒ€์ž…์— string ๋˜๋Š” number ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์žˆ๋‹ค๋ฉด keyof๋Š” ํ•ด๋‹น ํ‚ค ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.// 'number' ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒดtype Arrayish = { [n: number]: unknown };type A = keyof Arrayish; // A๋Š” number ํƒ€์ž…์ด ๋จ// 'string' ์ธ๋ฑ์Šค..

TypeScript 2025.08.30

Zod ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

https://zod.dev/ GitHub - colinhacks/zod: TypeScript-first schema validation with static type inferenceTypeScript-first schema validation with static type inference - colinhacks/zodgithub.com Zod : TypeScript๋ฅผ ์šฐ์„ ์œผ๋กœ ๊ณ ๋ คํ•œ ์Šคํ‚ค๋งˆ ์„ ์–ธ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋•Œ, "์Šคํ‚ค๋งˆ"๋ž€ ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด๋ถ€ํ„ฐ ๋ณต์žกํ•˜๊ฒŒ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๊นŒ์ง€, ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํฌ๊ด„์ ์œผ๋กœ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค. Zod๋Š” ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ ์‚ฌ์šฉ์„ฑ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ํƒ€์ž…์„ ์—†์• ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. Zod์—์„œ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ํ•œ ๋ฒˆ ์„ ์–ธํ•˜๋ฉด, ํ•ด๋‹น ์Šคํ‚ค..

TypeScript 2025.05.08

any์™€ unknown

any ํƒ€์ž…์–ด๋–ค ํƒ€์ž…์ด๋“  ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ํƒ€์ž…์œผ๋กœ, TypeScript์˜ ํƒ€์ž… ์ฒดํฌ๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.let anyVar: any = 10;anyVar = "hello";let num: number = 10;num = anyVar; any ํƒ€์ž…์˜ ๊ฐ’์€ ์–ด๋–ค ํƒ€์ž…์œผ๋กœ ์ •์˜๋œ ๋ณ€์ˆ˜๋˜ ๋ฌธ์ œ ์—†์ด ๋‹ค ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ number ํƒ€์ž…์˜ ๋ณ€์ˆ˜ num์— any ํƒ€์ž…์˜ ๊ฐ’ anyVar๋ฅผ ํ• ๋‹นํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. any ํƒ€์ž…์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด TypeScript์˜ ์žฅ์ ์ธ ํƒ€์ž… ์•ˆ์ „์„ฑ์ด ์‚ฌ๋ผ์ง€๋ฏ€๋กœ, ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งŒ ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. unknown ํƒ€์ž…์•„์ง ํƒ€์ž…์ด ํ™•์ •๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ํƒ€์ž…์œผ๋กœ, any ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ณด๋‹ค..

TypeScript 2024.11.27

ํƒ€์ž… ๋ณ„์นญ, ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜, ์—ด๊ฑฐํ˜• ํƒ€์ž…

ํƒ€์ž… ๋ณ„์นญ(Type Alias) : ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋“ฏ ํƒ€์ž…์„ ๋ณ„๋„๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.type User = { id: number; name: string; nickname: string; birth: string; bio: string; location: string;}; ์œ„์˜ ์ฝ”๋“œ๋Š” ํƒ€์ž… ์ด๋ฆ„์€ User, ํƒ€์ž…์œผ๋กœ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.type User = { id: number; name: string; nickname: string; birth: string; bio: string; location: string;};let user: User = { id: 1, name: "y9s2n6", nickname: "ysqz6", birth: ..

TypeScript 2024.11.18

๊ฐ์ฒด

๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• 1. object๋กœ ์ •์˜ํ•˜๊ธฐlet user: object = { id: 1, name: "y9s2n6"};user.id; // Property 'id' does not exist on type 'object'. user.id ์ฒ˜๋Ÿผ ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๊ฐ์ฒด์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ๋‚ด์šฉ์€ 'object' ํƒ€์ž…์— 'id' ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ object ํƒ€์ž…์€ ๋‹จ์ˆœ ๊ฐ’์ด ๊ฐ์ฒด์ž„์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๋Ÿฐ ์ •๋ณด๋„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํƒ€์ž…์€ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „ํ˜€ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.  2. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž… let user: { id: numbe..

TypeScript 2024.11.17

๋ฐฐ์—ด๊ณผ ํŠœํ”Œ

๋ฐฐ์—ด// ์ˆซ์ž๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์˜ ํƒ€์ž… ์ •์˜ํ•˜๊ธฐ let numArr: number[] = [1, 2, 3];let numArr: Array = [1, 2, 3];// ๋ฌธ์ž์—ด์„ ๋‹ด๋Š” ๋ฐฐ์—ด์˜ ํƒ€์ž… ์ •์˜ํ•˜๊ธฐlet strArr: string[] = ["hello", "im", "y9s2n6"];let strArr: Array = ["hello", "im", "y9s2n6"]; ๋ฐฐ์—ด์˜ ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋‘ ํ˜•์‹๋ฐฐ์—ด์š”์†Œํƒ€์ž…[] ํ˜•์‹Array : ๊บฝ์‡ ์™€ ํ•จ๊ป˜ ํƒ€์ž…์„ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ๋ฒ• - ์ œ๋„ค๋ฆญ๋‹ค์–‘ํ•œ ํƒ€์ž… ์š”์†Œ๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด ํƒ€์ž…์„ ์ •์˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”?  ์†Œ๊ด„ํ˜ธ์™€ | ๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋„๋ก ํƒ€์ž…์„ ์ •์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.let multiArr: (number | string)[] = [1, "he..

TypeScript 2024.11.16

์›์‹œํƒ€์ž…๊ณผ ๋ฆฌํ„ฐ๋Ÿดํƒ€์ž…

๊ธฐ๋ณธ ํƒ€์ž…(๋‚ด์žฅ ํƒ€์ž…) : ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํƒ€์ž…์›์‹œ ํƒ€์ž… : ๋”ฑ ํ•œ ๊ฐœ์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…+ ์›์‹œ ํƒ€์ž…์ด ์•„๋‹Œ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๊ฐ™์€ ๋น„ ์›์‹œ ํƒ€์ž…๋“ค์€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. number ํƒ€์ž… : ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ชจ๋“  ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์ •์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์†Œ์ˆ˜, ์Œ์ˆ˜, Infinity, NaN ๋“ฑ์˜ ํŠน์ˆ˜ํ•œ ์ˆซ์ž๋“ค๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.let num1: number = 123; let num2: number = -123; let num3: number = 0.123; let num4: number = Infinity; let num5: number = -Infinity; let num6: number = NaN; ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฌธ๋ฒ•์„ ํƒ€..

TypeScript 2024.11.12

์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ์„ค์ •ํ•˜๊ธฐ

TypeScript ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์€ tsconfig.json ํŒŒ์ผ์„ ํ†ตํ•ด ์„ค์ •ํ•˜๋ฉฐ ์ด ํŒŒ์ผ์€ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๊ณ  ์ปดํŒŒ์ผํ• ์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.tsc --init ํ„ฐ๋ฏธ๋„์— ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ์„ค์ •์ด ์™„๋ฃŒ๋œ tsconfig.jsonํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. include: tsc์—๊ฒŒ ์ปดํŒŒ์ผ ํ•  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋ฒ”์œ„์™€ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. include ์˜ต์…˜์„ ์„ค์ •ํ•œ ๋’ค์— tsc ๋ช…๋ น์–ด๋งŒ ์ž…๋ ฅํ•ด๋„ src ํด๋” ์•„๋ž˜์˜ ๋ชจ๋“  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ๋™์‹œ์— ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. target : TypeScript๊ฐ€ ์ปดํŒŒ์ผํ•œ JavaScript ์ฝ”๋“œ์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. tsc๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผํ•˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ES5 ๋ฒ„์ „์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.  module : JavaS..

TypeScript 2024.11.11

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ

macOS ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 1. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ํด๋” ๋งŒ๋“ค๊ธฐ2. Node.js ํŒจํ‚ค์ง€ ์ดˆ๊ธฐํ™” npm init 3. @types/node ์„ค์น˜ํ•˜๊ธฐnpm i @types/node 4. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜ํ•˜๊ธฐ (๋ฒ„์ „์ด ๋‚˜์˜จ๋‚˜๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)sudo npm i -g typescripttsc -v 5. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ tsc๋ฅผ ์ด์šฉํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๋ณ€ํ™˜๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ Node.js๋กœ ์‹คํ–‰ํ•˜๊ธฐtsc src/index.ts์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด src ํด๋” ๋‚ด์— index.js ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.node src/index.jstsx๋ฅผ ์ด์šฉํ•ด ๋‹จ ํ•œ๋ฒˆ์˜ ๋ช…๋ น์–ด๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์‹คํ–‰ํ•˜๊ธฐsudo npm i -g tsx ์œ„์˜ ๋ช…๋ น์–ด๋กœ tsx๋ผ๋Š” ํŒจํ‚ค..

TypeScript 2024.11.10

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ก 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ : ๊ธฐ์กด์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ€์ž… ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•œ ์–ธ์–ดํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅํŒ์ž…๋‹ˆ๋‹ค. [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ]let a = 1;let b = 2;console.log(a + b); [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ]let a:number = 1;let b:number = 2;console.log(a + b); ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ๋’ค์— ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์›น ์„œ๋ฒ„, ๋ชจ๋ฐ”์ผ ์•ฑ, ๋ฐ์Šคํฌํƒ‘ ์•ฑ ๋“ฑ ๋ณต์žกํ•œ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ฐ”๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋„ˆ๋ฌด ์œ ์—ฐํ•˜๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด ์œ ์—ฐํ•จ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ์„ ๋–จ์–ด..

TypeScript 2024.11.09