RSLike/std 3.1.0: TypeScript 코드를 위한 Result & Option 컨트롤 플로우 소개
2025-03-06 13:18:20RSLike/std 3.1.0: 현대적 TypeScript 코드 작성법
새로운 버전의 RSLike/std 라이브러리가 공개되었습니다. 이번 업데이트는 TypeScript와 JavaScript에서 더 안전한 코드를 작성할 수 있도록 돕는 다양한 기능을 소개합니다. 특히 Result와 Option 생성자에서의 컨트롤 플로우 개선은 주목할 만합니다. 또한 여러 생활 개선 기능과, 자주 발생하는 에러의 수정을 통해 개발자 경험을 대폭 향상시켰습니다.
API의 변경 사항
이번 업데이트의 핵심은 Result와 Option 생성자를 통한 컨트롤 플로우의 관리입니다. 이로써 함수의 반환값을 직접적으로 처리하거나, 프로미스를 사용해 보다 유연한 에러 처리가 가능해졌습니다.
import { Result, Option } from "@rslike/std";
// 생성자를 통한 흐름 제어
const result = new Result((ok, err) => {
if (Math.random() > 0.5) {
ok(42);
} else {
err("error");
}
});
// 반환값을 통한 흐름 제어
const result2 = new Result(() => {
if (Math.random() > 0.5) {
return 42;
} else {
throw new Error("error");
}
});
console.log(result2); // Result<42, Error> 혹은 Result<number, Error>
하지만 주의할 점은, 비동기 함수와 프로미스를 직접 생성자에서 사용하는 것은 지원되지 않으며, 이러한 경우에는 Result.fromPromise를 사용해야 합니다.
Result와 Option의 통합 사용
Option과 Result의 인스턴스를 활용한 깔끔한 에러 처리도 가능해졌습니다. 다음과 같은 예제를 통해 이를 확인할 수 있습니다.
import { Result } from "@rslike/std";
// 올바른 사용법
async function someFn() { /** implementation */}
const result = await Result.fromPromise(someFn());
// Result와 Option을 결합하여 사용
async function someFn(): number { /** implementation */}
const binded = Bind(someFn);
const r = await binded(); // Result<Option<number>>
프로미스를 통한 Option 생성
비동기 함수 또는 프로미스를 사용해 옵션을 안전하게 생성할 수도 있습니다. 이를 위해 Option.fromPromise 또는 Option.fromAsync 메서드를 사용하세요.
JavaScript 호환성의 개선
기존 enum 타입의 사용을 object로 변경하여 더욱 현대적인 JavaScript 스타일에 맞게 업데이트했습니다. 새롭게 추가된 여러 타입 체크 및 심볼에 대한 수정사항 역시 주목할 부분입니다.
// Symbol.iterator
const a = Some([1,2,3]);
for(const el of a) {
// ^ el의 타입: 1 | 2 | 3
}
// Symbol.asyncIterator 사용 불가
for await (const el of a) {
// ^ el의 타입은 never이며, 실행 시 오류 발생
}
정리 및 결론
RSLike/std 3.1.0은 최신 TypeScript 및 JavaScript 환경에서 개발자들이 더욱 안정적인 코드를 작성할 수 있도록 많은 기능을 제공합니다. 특히 그동안 개발자들이 어려움을 겪을 수 있었던 부분들을 개선하여, 더 나은 코딩 경험을 제공합니다. 이로 인해 RSLike는 프로젝트에 필수적인 도구가 될 것입니다.
참고 자료