-
타입스크립트에서 "using" 예약어의 동작👔, 📚, 🍱 2025. 1. 2. 22:07
들어가며
using
예약어는 const와 let 대신 사용되는 일회용 객체, 즉 사용 후 스스로 정리되는 객체를 의미합니다.
하지만, 이 예약어는 C#에서도 사용됩니다. 타입스크립트가 C#보다 늦게 태생된 것을 보아 C#을 배낀것일까요?
정답은 아닙니다, 타입스크립트는 전반적인 개발자 경험을 향상시키기 위해 C#에서 가장 좋은 기능을 골라낸 것일 뿐입니다.오늘은 타입스크립트에서
using
예약어가 어떻게 작동하는지, 그리고using
예약어가 가장 적합한 일반적인 사용 사례에 대해 설명하겠습니다.바로 들어가보시죠!
사용 방법
using
예약어는 const 및 let과 같은 방식으로 사용할 수 있습니다.// 참고. x에는 값 또는 함수를 할당해야합니다. using x = getX()
위 방식으로 할당은 가능하나,
using
예약어는 다음 용도로만 사용해야합니다.Symbol.dispose
예약어를 사용하는 객체.Symbol.dispose
예약어를 사용하여 객체를 반환하는 함수.- const를 사용하거나 그렇지 않다면 let을 사용하세요.
Symbol.dispose
는 객체를 "리소스"로, 즉 일회용으로 표시하는 데 사용되는 TypeScript의 특수 함수입니다.다음은 TypeScript의 "리소스"화 예시입니다.
// Symbol.dispose를 사용하여 일회용으로 표시된 객체 const disposableObject = { [Symbol.dispose]: () => { console.log("Dispose of me!"); }, }; // 객체를 리소스로 사용. using resource = disposableObject
이 개념을 확장하여
Symbol.asyncDispose
함수를 통해 리소스를 비동기적으로 폐기할 수 있는await using
사용으로 확장할 수 있습니다.const getResource = () => ({ [Symbol.asyncDispose]: async () => { await someAsyncFunc(); }, }); { await using resource = getResource(); }
일반적인 사용 사례 - 데이터베이스 연결
데이터베이스 연결은 아마도 가장 일반적인 사용 사례일 것입니다.
그 이유는 간단합니다.
코드 후반부에 데이터베이스 연결을 수동으로 닫을 필요가 없고Symbol.asyncDispose
함수가 이를 대신 처리해 주기 때문입니다.아래는 이 아이디어를 완벽하게 보여주는 TotalTypeScript의 코드 스니펫입니다.
using 예약어를 사용하지 않는 경우: ❌
// https://www.totaltypescript.com/typescript-5-2-new-keyword-using#database-connections const connection = await getDb(); try { // 데이터베이스 연결 후 비즈니스 로직 } finally { await connection.close(); }
using 예약어를 함께 사용 할 경우: ✅
https://www.totaltypescript.com/typescript-5-2-new-keyword-using#database-connections const getConnection = async () => { const connection = await getDb(); return { connection, [Symbol.asyncDispose]: async () => { await connection.close(); }, }; }; { await using db = await getConnection(); // db.connectiond과 함께 비즈니스 로직 수행 } // 해당 블록 스코프가 종료되면, 자동으로 DB의 커넥션이 닫힙니다!
이제 데이터베이스 연결 종료는
Symbol.asyncDispose
와using
예약어를 통해 자동으로 안전하게 처리됩니다.결론
using
예약어는Symbol.dispose
함수를 포함하는 일회용 객체인 "리소스"를 정의하는 데 사용됩니다.using
예약어를 추가하면 예상치 못한 버그가 제거되고 개발자 환경이 10배 이상 개선됩니다.
한번 사용해 보세요!원문 - Understand the “using” keyword in TypeScript
작성일 24년 6월 26일
'👔, 📚, 🍱' 카테고리의 다른 글
2024년 3째,4째 주 주기장 (1) 2024.01.30 2024년 2째 주 주기장 (0) 2024.01.15 2024년 첫째 주 주기장 (1) 2024.01.07 깃허브 소스 첫 기여활동! (부제목 : CSS 1줄 기여) (0) 2022.02.12 webpack - import(ES6)에대해서 간단히 알아보기. (0) 2022.02.09