Skip to Content
Sunbeen's Blog
Documents๊ตฌ TypescriptBasic_Grammer07. ๐ŸŸฆ TypeScript void, undefined, ์ธํ„ฐํŽ˜์ด์Šค ๋ณ‘ํ•ฉ ์ •๋ฆฌ

07. ๐ŸŸฆ TypeScript void, undefined, ์ธํ„ฐํŽ˜์ด์Šค ๋ณ‘ํ•ฉ ์ •๋ฆฌ

๐Ÿ“Œ 1. void์™€ undefined๋Š” ๋‹ค๋ฅด๋‹ค

  • void : ๋ฐ˜ํ™˜๊ฐ’์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์˜ ํƒ€์ž…
  • undefined : ์‹ค์ œ JS ๊ฐ’ undefined์— ํ•ด๋‹นํ•˜๋ฉฐ, ํ• ๋‹น๋˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ์Œ

โœ… ์˜ˆ์ œ: void๋Š” undefined๋งŒ ๋ฐ˜ํ™˜ ๊ฐ€๋Šฅ

function a(): void { // return '3'; // return 4; // return null; return undefined; // โ— ์—๋Ÿฌ ์•„๋‹˜ (๋‹จ, ๋ฐ˜ํ™˜๊ฐ’์€ ๋ฌด์‹œ๋จ) } const result = a(); // result ํƒ€์ž…์€ void console.log(result); // ์ถœ๋ ฅ: undefined

๐Ÿ” TypeScript๋Š” ๋ฆฌํ„ด๊ฐ’์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๋œป์ด์ง€, ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋‹ค๋Š” ๋œป์€ ์•„๋‹˜.

๐Ÿ“Œ 2. ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ์˜ void ์˜๋ฏธ

function forEach(arr: number[], callback: (el: number) => void): void { for (let el of arr) { callback(el); } } forEach([1, 2, 3], (el) => { return "abc"; // โœ… ํ—ˆ์šฉ๋จ. ๋ฐ˜ํ™˜๊ฐ’์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ });

์ฝœ๋ฐฑ ํ•จ์ˆ˜์— void๋ฅผ ์“ฐ๋ฉด โ€œ๋ฐ˜ํ™˜๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š”๋‹คโ€๋Š” ์˜๋ฏธ์ด์ง€, ๋ฆฌํ„ดํ•˜์ง€ ๋ง๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹˜.

๐Ÿ“Œ 3. Declare

declare๋ž€?

  • TypeScript์—์„œ โ€œ์ด๊ฑด JS ์–ด๋”˜๊ฐ€์— ์ด๋ฏธ ์ •์˜๋ผ ์žˆ์œผ๋‹ˆ, ํƒ€์ž…๋งŒ ์„ ์–ธํ• ๊ฒŒ!โ€ ๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ํ‚ค์›Œ๋“œ

  • declare๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€ํ™˜์‹œ ์‚ฌ๋ผ์ง„๋‹ค.

  • declare๋ฅผ ๋งŒ๋“ค์–ด๋‘๋ฉด, ํƒ€์ž…์„ ์–ธ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ํƒ€์ž…๋งŒ ์„ ์–ธ : JS์—๋Š” ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ, TS์—์„  ํƒ€์ž…๋งŒ ํ•„์š”ํ•  ๋•Œ

  • JS ๊ตฌํ˜„ ์—†์ด ํƒ€์ž… ๋ณด์žฅ : ์ฝ”๋“œ ์—†์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Œ (.d.ts)

  • ๊ธ€๋กœ๋ฒŒ ๋ณ€์ˆ˜/ํ•จ์ˆ˜ ์„ ์–ธ : ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ API, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ€์ˆ˜ ๋“ฑ

๐Ÿ“Œ 4. undefined๋ฅผ ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ์ผ์„ ๋•Œ

declare function forEach(arr: number[], callback: (el: number) => undefined): void; // target.push(el)์˜ ๋ฆฌํ„ด๊ฐ’์€ number์ด๋ฏ€๋กœ ์—๋Ÿฌ ๋ฐœ์ƒ โŒ forEach([1, 2, 3], (el) => { target.push(el); // โŒ Error: number ๋ฐ˜ํ™˜ โ†’ undefined ์•„๋‹˜ }); //2๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ //declare function forEach(arr: number[], callback: (el:number) => void): void ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€์•Š์Œ

void๋Š” ๋ฆฌํ„ด๊ฐ’์„ ๋ฌด์‹œํ•˜๋ฏ€๋กœ ๊ดœ์ฐฎ์ง€๋งŒ,

undefined๋Š” ์ •ํ™•ํžˆ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ โ†’ return; ๋˜๋Š” return undefined; ๋งŒ ํ—ˆ์šฉ

๐Ÿ“Œ 5. ์ธํ„ฐํŽ˜์ด์Šค์—์„œ void ๋ฆฌํ„ด ํ•จ์ˆ˜

interface Human { talk: () => void; } const human: Human = { talk() { return "hello"; // โœ… ํ—ˆ์šฉ๋จ, ๋ฆฌํ„ด๊ฐ’ ๋ฌด์‹œ๋จ } };

๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ (): void์—ฌ๋„ ๋ฆฌํ„ด๊ฐ’์ด ์žˆ์–ด๋„ OK

๋‹จ, ๊ทธ ๋ฆฌํ„ด๊ฐ’์€ ํ˜ธ์ถœ์ฒ˜์—์„œ ์“ธ ์ˆ˜ ์—†์Œ

๐Ÿ“Œ 6. void ๋ฐ˜ํ™˜์„ ์šฐํšŒํ•ด ํƒ€์ž… ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ

interface A { talk: () => void; } const a: A = { talk() { return 3; // โœ… ํ—ˆ์šฉ๋จ (๋ฌด์‹œ๋จ) } }; const b1 = a.talk(); // ํƒ€์ž…์€ void // const b2 = a.talk() as number // โŒ ์—๋Ÿฌ const b3 = a.talk() as unknown as number; // โœ… ์šฐํšŒ ๊ฐ€๋Šฅ const b4 = <number>(<unknown>a.talk()); // โœ… ์šฐํšŒ ๊ฐ€๋Šฅ
Last updated on