ν™ˆ void
포슀트
μ·¨μ†Œ

void

πŸ’» voidλž€?

voidλŠ” 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜μ˜ 리턴값을 μ˜λ―Έν•©λ‹ˆλ‹€. ν•¨μˆ˜μ— return문이 μ—†κ±°λ‚˜ λͺ…μ‹œμ μœΌλ‘œ 값을 λ°˜ν™˜ν•˜μ§€ μ•Šμ„λ•Œ μΆ”λ‘ λ˜λŠ” νƒ€μž…μž…λ‹ˆλ‹€.

void-function-example

πŸ’» void λ°˜ν™˜ νƒ€μž…μœΌλ‘œμ˜ λ¬Έλ§₯적 타이핑

void λ°˜ν™˜ νƒ€μž…μœΌλ‘œμ˜ λ¬Έλ§₯적 νƒ€μ΄ν•‘μ΄λž€, void λ°˜ν™˜ νƒ€μž…μ„ κ°€μ§€λŠ” ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹μ΄λ‚˜, ν•¨μˆ˜ 호좜 μ‹œκ·Έλ‹ˆμ²˜μ™€ 같은 것을 μ˜λ―Έν•©λ‹ˆλ‹€. void λ°˜ν™˜ νƒ€μž…μ„ κ°€μ§€λŠ” λ¬Έλ§₯적 ν•¨μˆ˜ νƒ€μž…μ΄ κ΅¬ν˜„λ˜μ—ˆμ„λ•ŒλŠ”, μ•„λ¬΄κ°’μ΄λ‚˜ 리턴할 수 μžˆμ§€λ§Œ λ¬΄μ‹œλ©λ‹ˆλ‹€. 즉 TypeScriptκ°€ μ•„λ¬΄λŸ° 값을 λ¦¬ν„΄ν•˜μ§€ λͺ»ν•˜λ„둝 κ°•μ œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹
type voidFuncTypeExpression = () => void;

// ν•¨μˆ˜ 호좜 μ‹œκ·Έλ‹ˆμ²˜
interface voidFuncCallSignature {
  (): void;
}

const f1: voidFuncTypeExpression = () => {
  return true;
};

const f2: voidFuncCallSignature = () => {
  return "hello";
};

const f3: voidFuncTypeExpression = function () {
  return true;
};

μœ„μ™€ 같이 μ„ μ–Έλœ ν•¨μˆ˜λ“€μ„ ν˜ΈμΆœν–ˆμ„ λ•Œ λ°˜ν™˜κ°’μ€ λͺ¨λ‘ void둜 μΆ”λ‘ λ©λ‹ˆλ‹€.

1
2
3
const result1 = f1(); // void
const result2 = f2(); // void
const result3 = f3(); // void

void λ°˜ν™˜ νƒ€μž…μ„ κ°€μ§€λŠ” λ¬Έλ§₯적 ν•¨μˆ˜ νƒ€μž…μ€ 주둜 callback ν•¨μˆ˜μ˜ νƒ€μž…μ—μ„œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
μ•„λž˜λŠ” JavaScript λ‚΄μž₯ ν•¨μˆ˜μΈ forEach의 νƒ€μž…μž…λ‹ˆλ‹€.

1
2
3
4
5
6
interface Array<T> {
  forEach(
    callbackfn: (value: T, index: number, array: T[]) => void,
    thisArg?: any
  ): void;
}

callbackfn의 νƒ€μž…μ΄ voidλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹μœΌλ‘œ λ˜μ–΄μžˆμ–΄, μ‹€μ œ μ–΄λ–€ 값을 λ¦¬ν„΄ν•˜λ”λΌλ„ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ μ•„λž˜μ™€ 같은 μ½”λ“œκ°€ μ„±λ¦½ν•˜κ²Œ λ©λ‹ˆλ‹€.

1
2
3
4
[1, 2, 3].forEach((element) => {
  console.log(element);
  return element;
});

πŸ’» λ¦¬ν„°λŸ΄ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œμ˜ void

λ§Œμ•½ λ¦¬ν„°λŸ΄ ν•¨μˆ˜μ˜ μ •μ˜κ°€ void 리턴값을 가지고 μžˆλ‹€λ©΄, κ·Έ ν•¨μˆ˜λŠ” μ•„λ¬΄λŸ° 값도 λ°˜ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

1
2
3
4
5
6
7
8
9
10
11
function f1(): void {
  return true;
}

const f2 = function (): void {
  return true;
};

const f3 = (): void => {
  return true;
};

μœ„ μ„Έ ν•¨μˆ˜λŠ” λͺ¨λ‘ νƒ€μž… μ—λŸ¬κ°€ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€.

이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

JavaScript Engine

λͺ¨λ“ˆ μ‹œμŠ€ν…œ