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

Develop Study ๐Ÿ’ป

[TypeScript, Python] null, undefined, None , ? / ?? ์‚ฌ์šฉ๋ฒ• ์˜๋ฏธ , ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž, ์˜ต์…”๋„ ์ฒด์ด๋‹

728x90
๋ฐ˜์‘ํ˜•

python์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋งŒ ํ•˜๊ณ  ๊ฐ’์„ ์•ˆ ๋„ฃ๋Š” ๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ(NameError), undefined ๊ฐœ๋…์ด ์—†์Œ

๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ๋ฌด์กฐ๊ป€ ์ดˆ๊ธฐํ™”๋ฅผ ๋™์‹œ์— ์‹œ์ผœ์ค˜์•ผํ•จ ( a = [] )

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋งŒํ•˜๊ณ  ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด undefined. 

null, none์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋Š”๊ฒƒ์ด ๋ฐ์ดํ„ฐ

 

 

TS์—์„œ null๊ณผ undefined์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• 

null ๊ฐ’์ด ๋“ค์–ด์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์œ ๋‹ˆ์˜จํƒ€์ž…์œผ๋กœ ๋ณ€์ˆ˜ ์ง€์ •

let address: string | null = "Seoul";

 

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

// user๊ฐ€ null์ด๋ฉด, user.address์— ์ ‘๊ทผํ•  ๋•Œ ์—๋Ÿฌ๊ฐ€ ํ„ฐ์ง(JS์˜ ๊ณ ์งˆ๋ณ‘)
// TS ํ•ด๊ฒฐ์ฑ…:
const city = user?.address?.city; 

// ํ•ด์„: user๊ฐ€ ์žˆ์–ด? -> ์žˆ์œผ๋ฉด address๊ฐ€ ์žˆ์–ด? -> ์žˆ์œผ๋ฉด city๋ฅผ ์ค˜. 
// ์—†์œผ๋ฉด? -> ๊ทธ๋ƒฅ undefined๋ฅผ ์ค˜ (์—๋Ÿฌ X)

 

๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํ™•์ธ -> ?

๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด? -> undefined ๋ฐ˜ํ™˜ 

 

2. ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž - Nullish Coalescing Operator (??)

๊ฐ’์ด ์—†์„๋•Œ (null, undefined์ธ ๊ฒฝ์šฐ)  default๊ฐ’ ์ง€์ •

// price๊ฐ€ null์ด๋‚˜ undefined๋ฉด 0์„ ๋„ฃ์–ด๋ผ.
const finalPrice = product.price ?? 0;

* JS/TS์˜ || ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž 0์ด๋‚˜ ๋นˆ ๋ฌธ์ž์—ด ""๋„ '๊ฑฐ์ง“'์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€๋งŒ, ??๋Š” ์˜ค์ง null/undefined์ผ ๋•Œ๋งŒ ์ž‘๋™

 

* or์—ฐ์‚ฐ์ž์™€ ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž >> default value๊ฐ’์„ ์ง€์ •ํ• ๋Œ€๋Š” ?? ์„ ์‚ฌ์šฉํ•˜์ž. 

// ์˜ˆ์‹œ: ๋‹‰๋„ค์ž„ ์„ค์ •
const inputName = ""; // ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฆ„์„ ์ž…๋ ฅ ์•ˆ ํ•˜๊ณ  ๊ทธ๋ƒฅ ์—”ํ„ฐ ์นจ (๋นˆ ๋ฌธ์ž์—ด)

// 1. || ์‚ฌ์šฉ ์‹œ
const name1 = inputName || "์ต๋ช…"; 
console.log(name1); // "์ต๋ช…" (๋นˆ ๋ฌธ์ž์—ด๋„ ๊ฑฐ์ง“ ์ทจ๊ธ‰ํ•ด์„œ ๋ฎ์–ด์”€)

// 2. ?? ์‚ฌ์šฉ ์‹œ
const name2 = inputName ?? "์ต๋ช…";
console.log(name2); // "" (์‚ฌ์šฉ์ž๊ฐ€ ๋นˆ ์ด๋ฆ„์„ ์›ํ–ˆ๋‹ค๊ณ  ์กด์ค‘ํ•ด์คŒ)

 

728x90
๋ฐ˜์‘ํ˜•