타입스크립트에서 void와 undefined를 함수의 반환 타입으로 사용할 때 중요한 차이점이 있다:
의미적 차이
void: 함수가 의도적으로 아무것도 반환하지 않음을 나타낸다.undefined: 함수가 명시적으로 undefined를 반환함을 의미한다.타입 안전성
void를 사용하면 함수가 어떤 값을 반환하더라도 그 값을 사용할 수 없게 된다.undefined를 사용하면 함수가 반드시 undefined를 반환해야 한다.유연성
void 반환 타입의 함수는 실제로 값을 반환할 수 있지만, 그 값은 무시된다.undefined 반환 타입의 함수는 반드시 undefined를 반환해야 한다.function logMessage(message: string): void {
console.log(message);
// 여기서 return 문이 없어도 됩니다.
}
function returnUndefined(): undefined {
return undefined;
// 반드시 undefined를 명시적으로 반환해야 한다.
}
// 이는 유효하다.
const result1: void = logMessage("Hello");
// 이는 오류를 발생시킨다.
const result2: undefined = logMessage("Hello");
// Type 'void' is not assignable to type 'undefined'.
void를 사용하는 것이 더 일반적이고 권장되는 방식이다. 이는 함수가 아무것도 반환하지 않는다는 의도를 명확히 표현하며, 반환 값을 실수로 사용하는 것을 방지한다. undefined를 반환 타입으로 사용하는 것은 함수가 명시적으로 undefined를 반환해야 하는 특별한 경우에만 사용된다.
따라서 함수가 단순히 작업을 수행하고 아무것도 반환하지 않는다면 void를 사용하는 것이 더 적절하다.
Citations:
[1] https://fe-j.tistory.com/entry/type-void
[2] https://haileyham.tistory.com/entry/TypeScript-void-type
[3] https://html-jc.tistory.com/627
[4] https://velog.io/@bada308/%EC%99%9C-Typescript%EB%8A%94-void-%ED%83%80%EC%9E%85%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%8F%84-%EA%B0%92%EC%9D%84-return-%ED%95%A0-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C
[5] https://velog.io/@codns1223/TS-void-any-unknown
[6] https://pozafly.github.io/typescript/why-can-typescript-return-any-value-using-void/
[7] https://yamoo9.gitbook.io/typescript/types/function-union-void
[8] https://codingapple.com/unit/typescript-function-types/