[TECH-QA] TypeScript Record<string, number> ๊ธฐ๋ณธ

  • Record ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์€ TypeScript์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‚ด์žฅ ํƒ€์ž…์œผ๋กœ, ํŠน์ • ํƒ€์ž…์˜ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
  • ํ‚ค(key): string ํƒ€์ž… (์˜ˆ: "age", "score", "id" ๋“ฑ).
  • ๊ฐ’(value): number ํƒ€์ž… (์˜ˆ: 42, 100, 3.14 ๋“ฑ).
  • ์ฆ‰, ๋ชจ๋“  ํ‚ค๊ฐ€ ๋ฌธ์ž์—ด์ด๊ณ , ๋ชจ๋“  ๊ฐ’์ด ์ˆซ์ž์ธ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
const scores: Record<string, number> = {
  math: 95,
  science: 88,
  history: 92
};'
์œ„ ๊ฐ์ฒด๋Š” Record ํƒ€์ž…์— ๋ถ€ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” math, science, history (๋ชจ๋‘ string)์ด๊ณ , ๊ฐ’์€ 95, 88, 92 (๋ชจ๋‘ number)์ž…๋‹ˆ๋‹ค.

ํŠน์ง•

  • ๋™์  ํ‚ค ํ—ˆ์šฉ: ํ‚ค๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š๊ณ , ๋ฌธ์ž์—ด์ธ ์–ด๋–ค ํ‚ค๋“  ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ’ ํƒ€์ž… ๊ฐ•์ œ: ๋ชจ๋“  ๊ฐ’์€ number ํƒ€์ž…์ด์–ด์•ผ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ํƒ€์ž…(์˜ˆ: string, boolean)์„ ๋„ฃ์œผ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
const invalid: Record<string, number> = {
  name: "John" // ์—๋Ÿฌ: "John"์€ number๊ฐ€ ์•„๋‹˜
};
  • ๋นˆ ๊ฐ์ฒด ๊ฐ€๋Šฅ: Record ํƒ€์ž…์˜ ๊ฐ์ฒด๋Š” ์†์„ฑ์ด ์—†์–ด๋„ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
const empty: Record<string, number> = {};

๋‹ค๋ฅธ ํƒ€์ž…๊ณผ์˜ ๋น„๊ต

  • { [key: string]: number } ์™€ ๋™์ผ: Record๋Š” ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜ { [key: string]: number }์™€ ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Record๋Š” ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ œํ•œ๋œ ํ‚ค ํƒ€์ž…: ํ‚ค๋ฅผ ํŠน์ • ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ œํ•œํ•˜๋ ค๋ฉด Record<"key1" | "key2", number>์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
const limited: Record<"width" | "height", number> = {
  width: 100,
  height: 200
  // depth: 50 // ์—๋Ÿฌ: "depth"๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ํ‚ค
};
๊ฐ’ ํƒ€์ž… ์ผ๊ด€์„ฑ: ๋ชจ๋“  ๊ฐ’์ด number์—ฌ์•ผ ํ•˜๋ฉฐ, undefined๋‚˜ null๋„ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋‹จ, Record์ฒ˜๋Ÿผ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉ ๊ฐ€๋Šฅ).