Denoチームはこの程、Deno 1.40をリリースした。Deno 1.40は、高度な日付と時間操作のためのJavaScriptの次期Temporal APIと、メタ指向とアスペクト指向プログラミングのための最新のJavaScriptのデコレーター提案を実装している。
Temporal APIは、JavaScriptのDateオブジェクトの欠点に対処するものだ。数年前に Maggie Johnson-Pint氏が説明した。
私たちは現在の
Date
実装の基本的な問題を特定しました。嫌な順に並べると、以下のようになります。
ユーザーのローカルタイムとUTC以外のタイムゾーンをサポートしていない。
パーサーの動作は信頼性に欠け、使い物にならない。
日付オブジェクトは変更可能。
サマータイムの動作は予測不可能。
計算APIが扱いにくい。
グレゴリオ暦以外の暦をサポートしていない。
APIの詳細については、開発者はTemporalクックブックを見ることができる。Temporal API案はステージ3で、ステージ4に移行したときに正式にJavaScript言語の一部になる。
JavaScriptのデコレーター提案もステージ3で、開発者がJavaScriptクラスを拡張できるようにする。
デコレーターとは、定義中にクラスやクラス要素、その他のJavaScript構文フォームから呼び出される関数のことだ。以下は、関数が呼び出されるたびにログアウトし、それが戻ったときにログアウトする@trace
デコレーターの例である:
function trace(fn: any, ctx: ClassMethodDecoratorContext) {
return function (...args: unknown[]) {
console.log("ENTERED", ctx.name);
const v = fn(...args);
console.log("EXITED", ctx.name);
return v;
};
}
class App {
@trace
static start() {
console.log("Hello World!");
}
}
App.start();
提案書の説明によると、
デコレーターが現在も追求されている主な理由の1つ、特にクラス・デコレーターが重要な言語機能である主な理由は、JavaScriptのメタプログラミング機能に存在するギャップを埋めるためである。
デコレーターは、Angular 2(現在は単にAngular)によって普及した。しかし、現在の提案は4回目の反復であり、提案プロセスが完了した時点で、最終的に仕様に追加される最終バージョンになると予想される。 TC39(JavaScript言語を標準化する専門委員会)は、5年以上にわたってデコレーターの提案を繰り返してきた。
開発者は、機能、改善、バグ修正の全リストを含むオリジナルのリリースノートを確認することが推奨される。DenoはMITライセンスの下で利用可能なオープンソースソフトウェアである。コントリビューションはDenoプロジェクトを通じて行うことが推奨され、Denoコントリビューション・ガイドラインに従うべきである。