동도리 개발 로그
[JS, Typescript] 새로운 선언 using 본문
반응형
자바스크립트 와 타입스크립트에 새로운 선언 키워드가 추가된다고한다. (typescript 5.2 버전 기준 - 2023.7.7 현재는 베타버전)
goLang의 defer 와 비슷한 동작을 하는 키워드이다.
https://www.totaltypescript.com/typescript-5-2-new-keyword-using
var, let, const 이 외에 using이라는 키워드가 추가된다.
{
const getResource = () => {
return {
[Symbol.dispose]: () => {
console.log('Hooray!')
}
}
}
using resource = getResource();
} // 'Hooray!' logged to console
using으로 선언된 스코프를 벗어나면 자동으로 Symbol.dispose 로 선언된 부분이 실행이 된다.
이전과 비교하자면
using 사용 전
import { open } from "node:fs/promises";
let filehandle;
try {
filehandle = await open("thefile.txt", "r");
} finally {
await filehandle?.close();
}
using 사용 후
import { open } from "node:fs/promises";
const getFileHandle = async (path: string) => {
const filehandle = await open(path, "r");
return {
filehandle,
[Symbol.asyncDispose]: async () => {
await filehandle.close();
},
};
};
{
await using file = getFileHandle("thefile.txt");
// Do stuff with file.filehandle
} // Automatically disposed!
코드가 조금 길어진 것 같지만 실제 사용하다보면 미리선언만하면 신경 안써도 된다는 부분이 편할 것 같다.
C# 을 참고하여 만들어졌다고 하는데 DB 커넥션에 유용하게 사용 될 거라고 한다.
DB Connection
using 사용 전
const connection = await getDb();
try {
// Do stuff with connection
} finally {
await connection.close();
}
using 사용 후
const getConnection = async () => {
const connection = await getDb();
return {
connection,
[Symbol.asyncDispose]: async () => {
await connection.close();
},
};
};
{
await using db = getConnection();
// Do stuff with db.connection
} // Automatically closed!
DB 커넥션은 close() 해야 하는데 미리선언만 하면 되니 편리 할 것 같다.
반응형
'개발 > 공통' 카테고리의 다른 글
Mac - Java 버전 관리 (jenv) (0) | 2022.02.25 |
---|---|
Mac - Java 버전 관리 (brew) (0) | 2022.02.25 |
HTTP/1.1 과 HTTP/2.0 와 HTTP/3 (0) | 2022.01.24 |
핸드폰 개발자모드 변경(note20) (0) | 2022.01.13 |
안드로이드 스튜디오 설치 - MacOS(intel) (0) | 2022.01.07 |