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

TypeScript

(11)
enum ์‚ฌ์šฉ์„ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ  enum์€ JavaScript๋กœ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜๋ ๊นŒ?TypeScript์˜ enum์€ JavaScript์— ์—†๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ JavaScript๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ IIFE๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.// TypeScript ์ฝ”๋“œenum WeekDays { MON = "Mon", TUES = "Tues", WEDNES = "Wednes", THURS = "Thurs", FRI = "Fri",}// JavaScript๋กœ ์ปดํŒŒ์ผ๋œ ๊ฒฐ๊ณผvar WeekDays;(function (WeekDays) { WeekDays["MON"] = "Mon"; WeekDays["TUES"] = "Tues"; WeekDays["WEDNES"] = "Wednes"; Wee..
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' ์ธ๋ฑ์Šค..
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์—์„œ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ํ•œ ๋ฒˆ ์„ ์–ธํ•˜๋ฉด, ํ•ด๋‹น ์Šคํ‚ค..
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 ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ณด๋‹ค..
ํƒ€์ž… ๋ณ„์นญ, ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜, ์—ด๊ฑฐํ˜• ํƒ€์ž… ํƒ€์ž… ๋ณ„์นญ(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: ..
๊ฐ์ฒด ๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• 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..
๋ฐฐ์—ด๊ณผ ํŠœํ”Œ ๋ฐฐ์—ด// ์ˆซ์ž๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์˜ ํƒ€์ž… ์ •์˜ํ•˜๊ธฐ 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..
์›์‹œํƒ€์ž…๊ณผ ๋ฆฌํ„ฐ๋Ÿดํƒ€์ž… ๊ธฐ๋ณธ ํƒ€์ž…(๋‚ด์žฅ ํƒ€์ž…) : ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํƒ€์ž…์›์‹œ ํƒ€์ž… : ๋”ฑ ํ•œ ๊ฐœ์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…+ ์›์‹œ ํƒ€์ž…์ด ์•„๋‹Œ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๊ฐ™์€ ๋น„ ์›์‹œ ํƒ€์ž…๋“ค์€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 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; ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฌธ๋ฒ•์„ ํƒ€..