1Link.Fun 科技周刊

TypeScript 5.2 新关键字: using

TypeScript 可以认为是前端界的 Java, 这不, TypeScript 5.2 即将引入新的关键字: using, 如果你熟悉 Java, 那么 using 关键字就是 TypeScript 界的 try-with-resource, 作用就是如果你用 using 修饰任何一个包含有 Symbol.dispose / Symbol.asyncDispose 方法的对象, 当跳出这个对象的作用域时, 系统会自动调用这个对象的 Symbol.dispose / Symbol.asyncDispose 方法.

一个经典的例子是数据库连接对象, 在 using 之前, 关闭数据库连接对象大概长这样:

// 获取数据库连接
const connection = await getDb();
try {
  // 使用数据库连接
} finally {
  // 在 finally 代码块里关闭连接
  await connection.close();
}

用了 using 之后, 代码长这样:

// 封装了原始数据库连接的新对象, 并且在 Symbol.asyncDispose 异步方法里关闭连接
const getConnection = async () => {
  const connection = await getDb();
  return {
    connection,
    [Symbol.asyncDispose]: async () => {
      await connection.close();
    },
  };
};
{
  // 对于使用者来说, 只需要使用这个新对象即可
  await using { connection } = getConnection();
  // 使用数据库连接
} // 出了作用域之后, 会自动调用异步的方法关闭数据库连接

刚好想到之前 Java 21 的新功能: 未命名类和实例 main 方法, 具体来说就是下面这样:

void main() {
    System.out.println("Hello, World!");
}

有了这个功能, 上面的 java 代码就是合法的 Java 入口类代码了.

#前端 #编程 #科技周刊 #HackerNews #互联网