๐Ÿ” TypeScript์˜ ? ์—ฐ์‚ฐ์ž, ์ด๊ฑด Optional์ด ์•„๋‹ˆ๋ผ๊ณ ?

๋‘๋ถ€๋งยท2025๋…„ 3์›” 28์ผ

์ด๋ชจ์ €๋ชจ...

๋ชฉ๋ก ๋ณด๊ธฐ
9/12

React + TypeScript๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ? ๋ฌธ๋ฒ•์„ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ณด๊ฒŒ ๋˜๋Š”๋ฐ,
๋ชจ๋‘ ๊ฐ™์€ ์˜๋ฏธ์ผ๊นŒ? โ†’ โŒ ๊ผญ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค!

1. ์˜ต์…”๋„ ์ฒด์ด๋‹ (?.)

const result  = userName?.length;

์˜๋ฏธ:
userName์ด null์ด๋‚˜ undefined๊ฐ€ ์•„๋‹ˆ๋ฉด .length๋ฅผ ์‹คํ–‰ํ•˜๊ณ ,
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ!

/*
        ? ๋Š” null safe ์—ฐ์‚ฐ์ž

        userName?.length ์˜ ์˜๋ฏธ๋Š” userName ์ด null ์ด ์•„๋‹๋•Œ๋งŒ .length ๋ฅผ ์ฐธ์กฐํ•ด๋ผ ๋ผ๋Š” ์˜๋ฏธ
        userName!.length ์˜ ์˜๋ฏธ๋Š” userName ์ด null ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์—†์œผ๋‹ˆ ๊ทธ๋ƒฅ .length ๋ฅผ ์ฐธ์กฐํ•ด๋ผ ๋ผ๋Š” ์˜๋ฏธ

        const result = userName?.length ์—์„œ 
        1. userName ์ด null ์ด ์•„๋‹ˆ๋ฉด .length ๊ฐ€ ์ฐธ์กฐ๋˜์–ด์„œ result ์— ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๋Œ€์ž…๋œ๋‹ค.
        2. userName ์ด null ์ด๋ฉด .length ๊ฐ€ ์ฐธ์กฐ ๋˜์ง€ ์•Š๊ณ  result ์—๋Š” null ์ด ๋Œ€์ž…๋œ๋‹ค.
        ๋”ฐ๋ผ์„œ result ๋ผ๋Š” ๋ณ€์ˆ˜๋„ null ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
        ???
    */

๊ทธ๋ ‡๋‹ค๋ฉด optional ์†์„ฑ์˜ ?๋Š”?

interface User {
  name?: string;
}
  • ์ด๊ฑด ํƒ€์ž…์„ ์ •์˜ํ•  ๋•Œ ์“ฐ๋Š” ?
  • name ์†์„ฑ์ด ์žˆ์–ด๋„ ๋˜๊ณ , ์—†์–ด๋„ ๋˜๋Š” ์„ ํƒ์  ์†์„ฑ (optional property)

๊ธฐ์–ตํ•˜์ž๋ฉด...

  • ?. ๋Š” ์‹คํ–‰ ์ค‘์— ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž

  • ?: ๋Š” ํƒ€์ž… ์ •์˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„ ํƒ์  ์†์„ฑ

  • ๋ชจ์–‘์€ ๋น„์Šทํ•ด๋„ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์šฉ๋„!

profile
ํ•˜์ดํ•˜์ž‰

0๊ฐœ์˜ ๋Œ“๊ธ€