어떤 함수에 대한 처리가 성공적일때 반환하는 타입과 실패했을때 반환하는 타입을 정하고 싶을 경우가 있습니다.
예를 들어서 다음과 같은 코드가 있습니다.
const result = divide(10, 0);
if (result.ok) {
console.log(result.value); // number
} else {
console.error(result.error.message);
}
divie는 받은 인자를 이용해 나누셈을 하는 함수로 10을 0으로 나누면 에러가 발생합니다. 실패에 대한 반환 타입과 성공에 대한 반환 타입을 구분하기 위해서 먼저 다음과 같은 타입을 정의합니다.
type Result<T, E = Error> =
| { ok: true; value: T }
| { ok: false; error: E };
위의 코드를 이용해 앞서 봤던 divide 함수를 다음처럼 정의합니다.
function divide(a: number, b: number): Result<number> {
if (b === 0)
return {
ok: false,
error: new Error("0으로 나눌 수 없어!")
};
else
return {
ok: true,
value: a / b
};
}
내 삶은 어디로 수렴하는가? 그 목적지는 매일 내가 생각하고 행동하는 것들에 달려있다. 혹자는 이것이 운명이라 한다.
