더이노베이터스

ES2025

6월 말, ECMAScript 2025가 공식 승인되었습니다. 이번 글에서는 현재 채택된 기능들 중, 실무 개발 생산성 측면에서 주목할 만한 기능들을 소개합니다.

1. Iterator Helper 메서드 도입

핵심 기능: map(), filter(), take(), drop() 등의 메서드를 이제 iterator에서 직접 사용할 수 있게 됩니다.

왜 중요한가: 기존에는 배열 메서드만 사용할 수 있었고, iterators를 사용할 때는 중간 배열을 만들어야 했습니다. 이제는 메모리 효율적인 방식으로 스트림, 반복자, 대용량 데이터 처리가 가능해집니다.

활용 예시:

const it = [1, 2, 3, 4, 5].values().map(x => x * 2).take(3);
// 결과: 2, 4, 6

2. Import Attributes & JSON 모듈

핵심 기능: JSON을 JavaScript 코드에서 네이티브로 import할 수 있게 되었습니다. 이제 별도 번들러 설정 없이 아래처럼 작성하면 됩니다:

import config from './config.json' with { type: 'json' };

왜 중요한가: 기존에는 Webpack, Vite 등의 번들러에서만 가능했으나, 이제는 브라우저나 Node.js 환경에서도 기본 지원됩니다. 구성 파일이나 정적 데이터 활용이 더 간결해집니다.

주의할 점: 프레임워크나 번들러에서 이미 잘 작동하는 기능이라, 변화가 크게 체감되진 않을 수 있습니다.


3. Promise.try()

핵심 기능: 동기 코드에서 에러가 날 수 있는 부분을 try/catch 없이 Promise 체인으로 다룰 수 있게 합니다.

활용 예시:

Promise.try(() => mightThrow())
  .then(result => doSomething(result));

왜 중요한가: 동기 코드와 비동기 코드를 자연스럽게 섞어 사용할 수 있다는 점에서 코드 가독성과 일관성을 높여줍니다. 하지만 실무에서는 여전히 async/await 패턴이 주류라 체감도는 높지 않을 수 있습니다.


4. Set 전용 메서드 (합집합, 교집합 등)

핵심 기능: 이제 Set에서도 union(), intersection(), difference(), isSubsetOf() 등의 연산을 기본으로 제공합니다.

활용 예시:

const s1 = new Set(['a', 'b']);
const s2 = new Set(['b', 'c']);
const result = s1.union(s2); // Set {'a', 'b', 'c'}

왜 중요한가: 그동안은 Set을 배열로 변환해 map이나 filter를 사용하는 등 불필요한 작업이 많았습니다. 이번 개선으로 수학적 집합 연산을 코드에서 직관적으로 처리할 수 있게 됩니다.


5. RegExp.escape()

핵심 기능: 정규표현식에 사용자 입력 등 임의 문자열을 안전하게 삽입할 수 있도록 escape 처리를 자동으로 해줍니다.

활용 예시:

const safe = RegExp.escape('hello.*+?');
// 결과: 'hello\\\\.\\\\*\\\\+\\\\?'

왜 중요한가: 정규식 조합에서 흔히 발생하는 특수문자 처리 문제를 방지해 줍니다. 검색창이나 필터링 기능 구현 시 매우 유용할 수 있습니다.

체감 효과: 작지만 실용적인 변화. 예기치 않은 버그 예방에 효과적입니다.


결론

ES2025는 일부 ‘눈에 띄는’ 기능보다는, 개발자의 실질적인 작업을 더 간결하고 안전하게 만드는 데 초점이 맞춰져 있습니다. 특히 iterator와 set의 강화, 정규식 안전성 확보, JSON 모듈의 네이티브화 등은 실무에서 자주 마주치는 패턴들에 작지만 강한 변화를 가져다 줄 것으로 기대됩니다.

자바스크립트는 여전히 빠르게 진화 중이며, 올해도 어김없이 우리는 더 나은 도구를 손에 넣었습니다. 지금 바로 개발 환경을 최신 버전으로 올려 테스트해보는 것은 어떨까요.

TI Tech Lab 이유진 연구원

Source

Avatar

theinnovators

Add comment