타입스크립트 void 타입 예제

타입스크립트의 void 타입은 함수가 실행된 뒤 호출한 곳에서 사용할 반환값이 없다는 뜻이다.

데이터를 계산해 돌려주는 함수가 아니라, 메시지를 출력하거나 상태를 변경하고 이벤트를 처리하는 함수에 사용될 수 있다.

만약,
알림을 표시하거나 로그를 기록하는 함수는 특정 작업을 수행만 할 뿐, 실행 결과는 굳이 사용하지 않는다.

이런 형태의 함수의 반환 타입을 void로 지정하면 해당 함수가 결과값 전달을 목적으로 하지 않는다는 점을 타입스크립에 명시할 수 있다.

다만,
void가 있는 함수가 아무 작업도 하지 않는다는 의미는 아니다.

void 함수도 화면을 변경하거나 데이터를 저장하고, 설정값을 수정하는 등 다양한 작업을 수행할 수 있다.

단지, 작업이 끝난 뒤 호출한 코드에서 활용할 반환값이 없다는 의미이기 때문이다.

function printMessage(): void {
  console.log("안녕하세요.");
}

⊙

function showNotification(): void {
  console.log("새로운 알림이 있습니다.");
}

⊙

const result = showNotification();

// result의 타입은 void

⊙

function add(a: number, b: number): number {
  return a + b;
}

const result = add(10, 20);
console.log(result); // 30

⊙

function logUserName(name: string) {
  console.log(name);
}

⊙

function logA(message: string) {
  console.log(message);
}

function logB(message: string): void {
  console.log(message);
}

⊙

function printOrderNumber(orderNumber: string): void {
  console.log(`주문번호: ${orderNumber}`);
}

printOrderNumber("ORDER-1001");

⊙

const output = printOrderNumber("ORDER-1001");

console.log(output); // 실행 결과는 undefined

⊙

const printProduct = (productName: string): void => {
  console.log(`상품명: ${productName}`);
};

printProduct("무선 키보드");

⊙

type Logger = (message: string) => void;

const logger: Logger = (message) => {
  console.log(message);
};

logger("로그를 기록합니다.");

⊙

interface UserService {
  logout(): void;
}

const userService: UserService = {
  logout(): void {
    console.log("로그아웃되었습니다.");
  },
};

userService.logout();

⊙

class Cart {
  private items: string[] = [];

  addItem(item: string): void {
    this.items.push(item);
  }

  printItems(): void {
    console.log(this.items);
  }
}

const cart = new Cart();

cart.addItem("노트북");
cart.addItem("마우스");
cart.printItems();

⊙

function handleClick(): void {
  console.log("버튼을 클릭했습니다.");
}

⊙

function handleClick(): void {
  console.log("버튼을 클릭했습니다.");
}

⊙

const button = document.querySelector<HTMLButtonElement>("#save-button");

button?.addEventListener("click", (): void => {
  console.log("저장 버튼을 클릭했습니다.");
});

⊙

function runTask(callback: () => void): void {
  callback();
}

runTask(() => {
  console.log("작업을 실행합니다.");
});

⊙

function processNames(
  names: string[],
  callback: (name: string) => void
): void {
  names.forEach((name) => {
    callback(name);
  });
}

processNames(["민수", "지수", "서준"], (name) => {
  console.log(`사용자: ${name}`);
});

⊙

type ClickHandler = () => void;

⊙

type VoidFunction = () => void;

const getNumber: VoidFunction = () => {
  return 100;
};

const result = getNumber();
// result의 타입은 void

⊙

const numbers = [1, 2, 3];

numbers.forEach((number) => {
  return number * 2;
});

⊙

const doubledNumbers = numbers.map((number) => {
  return number * 2;
});

console.log(doubledNumbers); // [2, 4, 6]

⊙

function calculateTotal(): void {
  return 100;
}

⊙

function calculateTotal(): number {
  return 100;
}

⊙

function calculateTotal(): void {
  console.log("합계를 계산했습니다.");
}

⊙

// 직접 void 반환 함수로 선언
function exampleA(): void {
  // return 1; 오류
}

// void 콜백 타입에 함수 할당
const exampleB: () => void = () => {
  return 1; // 반환값이 무시되는 문맥
};

⊙

async function saveLog(): Promise<void> {
  await Promise.resolve();

  console.log("로그 저장 완료");
}

⊙

async function run(): Promise<void> {
  await saveLog();

  console.log("다음 작업 실행");
}

run();

⊙

interface User {
  id: number;
  name: string;
}

async function getUser(): Promise<User> {
  return {
    id: 1,
    name: "홍길동",
  };
}

⊙

Promise<void>   // 완료 여부만 중요
Promise<User>   // 완료 후 User 데이터가 필요
Promise<number> // 완료 후 숫자 결과가 필요

⊙

let emptyValue: void = undefined;

⊙

function printMessage(): void {
  console.log("메시지");
}

⊙

function getEmptyValue(): undefined {
  return undefined;
}

⊙

function throwError(message: string): never {
  throw new Error(message);
}

⊙

function keepRunning(): never {
  while (true) {
    console.log("실행 중");
  }
}

⊙

function logMessage(): void {
  console.log("정상적으로 종료됩니다.");
}

function fail(): never {
  throw new Error("정상적으로 종료되지 않습니다.");
}

댓글

비주얼 스튜디오 코드 VSCode 설치하기 - 마이크로소프트 공식 홈페이지

이미지
VSCode( 비주얼스튜디오코드, Visual Studio Code )는 마이크로소프트( Microsoft )에서 제공하는 있는 무료 코드 편집기 프로그램이다. 프로그래밍 언어의 소스 코드를 작성하고 수정하며, 확장 기능을 설치하여 개발 환경을 구성할 수 있다. 윈도우즈, 맥OS, 리눅스( Windows, macOS, Linux )에서 사용할 수 있으며, 공식 홈페이지를 통해 자신의 운영체제에 맞는 설치 파일을 다운로드받고 설치할 수 있다. 윈도우즈의 경우, 인스톨러 파일( Installer )를 이용하여 설치할 수 있다. 설치파일을 다운로드하고 실행한 다음 화면의 안내에 따라 VSCode 설치를 진행하면 된다. 설치가 완료되면 VSCode를 실행하여 자신이 원하는 코드를 작성할 수 있다. 비주얼 스튜디오 코드 설치하기 - 마이크로소프트 공식 홈페이지 VSCode 무료 소스 코드 편집기 VSCode(비주얼 스튜디오 코드, Visual Studio Code)는 Microsoft에서 개발한 무료 소스 코드 편집기이다. 소스 코드란 컴퓨터 프로그램을 만들기 위해 프로그래밍 언어로 작성한 명령문의 집합이며, VSCode에서 소스 코드를 작성하고 수정할 수 있다. VSCode의 특징을 보자. 무료 사용 VSCode 기본 프로그램을 무료로 다운로드하여 사용 다중 운영체제 Windows, macOS, Linux를 지원 코드 편집 여러 프로그래밍 언어의 소스 코드를 작성하고 수정 가능 확장 기능 Extensions를 이용하여 언어 지원과 개발 도구를 추가 디버깅 지원되는 언어와 개발 환경에서 프로그램 오류를 조사 Git 통합 Git을 이용한 소스 코드 변경 관리 기능을 제공 VSCode 자체는 코드 편집기이고 프로그래밍 언어에 따라 컴파일러, 실행 환경, 개발 도구 등을 별도로 설치해야 할 필요가 있다. 만약, Java 프로그램을 개발할 때는 VSCode 외에 JDK와 관련 확장 기능이 필요하다. VSCode 무료 소스 코드 편집기 VSCode 설치 전 확인 사항 VSCo...

이 블로그의 인기 게시물

ChatGPT Codex GitHub 연결 해제 방법 (앱 삭제까지 정리)

C언어 return 종류와 차이 | return, return 0, return -1, return n

C언어 프로그램 종료 방법 3가지 비교 (실전 예제 포함) | exit() abort() 함수 사용 방법