12 ポイント 投稿者 kuroneko 2023-06-20 | 1件のコメント | WhatsAppで共有
  • TypeScript 5.2で、スコープを抜けるときにオブジェクトを明示的に破棄できる新しいキーワード using が追加。
  • C# などにすでに存在する using と似た機能。
    • 特定の関数がオブジェクトを返すとき、Symbol.dispose シンボルを使って関数を割り当てる。
    • using を通じてその関数を呼び出す。
    • その後スコープを抜けると、Symbol.dispose 関数が呼び出される。
  • 最近ステージ3に到達した TC39の明示的リソース管理提案 に基づいている。
  • Symbol.asyncDispose を通じて非同期関数を割り当て、await using を使って非同期的にオブジェクトを処理できる。
  • DB接続、ファイルハンドラなど、さまざまな状況で活用可能。

1件のコメント

 
kuroneko 2023-06-20

この機能は実のところTypeScript独自の機能ではなく、ECMAScriptに提案されている機能に基づいた、いわばポリフィルのようなものです。
TC39の提案により、JavaScriptでも実装される予定だそうです。

私はC#を書いていたときに using が少し便利だった記憶があるので歓迎ではあるのですが、
結局 try ... finally と同じではないか、という声もそこそこあるようですね。