TypeScriptチームは、TypeScriptのバージョン3.2をリリースし、さまざまなメタプログラミングパターンのサポート、ジェネリック型に対するオブジェクトのスプレッドとレストを改善した。このリリースには、このステージ3 ECMAScriptの提案をサポートする環境に対するBigIntサポートも含まれている。
TypeScript 3.2では、さまざまな種類の完全サポートに向けた重要な要素の1つである、bind, call, apply
の厳密な型チェックが追加されている。TypeScriptプログラムマネージャのDaniel Rosenwasserは、これらの追加の型チェックの重要性を説明している。
JavaScriptでは、bind、call、applyは、バインドして部分的に引数を適用できるようにし、異なる値で関数を呼び出せるようにし、引数として配列を使用して関数を呼び出せるようにする関数のメソッドです。
TypeScriptはこれまで厳密にこれらの関数をチェックすることができず、bind、call、およびapplyのそれぞれは任意の数の引数を受け入れて任意の型を返すように使われていた。以前からある2つの機能で、bind、call、applyの正確性を高めるために必要な抽象化をサポートしている。
this
パラメータ型(TypeScript 2.0)- タプル型を使ったパラメータリストのモデリング(TypeScript 3.0)
TypeScript 3.2リリースは新しいフラグstrictBindCallApply
を導入している。これはbind, call, apply
に対してより厳密なバージョンの署名を宣言するための2つに新しいグローバル型を追加している。
CallableFunction
- 呼び出し可能なオブジェクトのメソッドNewableFunction
- 新規作成可能だが呼び出し不可能なオブジェクトのメソッド
TypeScriptチームは、この機能が洗練されたメタプログラミング、またはクラスインスタンス内のバインディングメソッドのような単純なパターンを使用するときに、バグを見つけるのに役立つと期待している。
ES2015から広く普及している2つの機能であるオブジェクトのスプレッドとレストは、ほとんどのTypeScriptでサポートされているが、このリリースまではジェネリック型に対して使用できなかった。
スプレッドの場合、TypeScriptはジェネリック型から戻り型を表現する方法がないため、未知の2つの型を新しいものに表現するためのメカニズムはなかった。 TypeScript 3.2では、ジェネリックに対してオブジェクトのスプレッドが利用可能になり、インターセクションタイプを使用してこの機能をモデル化する。
オブジェクトレストの場合、いくつかの追加/上書きされたプロパティを持つ新しいオブジェクトを作成する代わりに、レストはいくつかの指定されたプロパティを欠く新しいオブジェクトを作成する。しかし、多くのアイデアを繰り返し考えた結果、TypeScriptチームは、既存のPick
およびExclude
ヘルパー型がジェネリック型に対してオブジェクトレストを実行する機能を提供することに気づいた。
BigIntのサポートはほぼ完成しており、ES2019規格の一部となることが期待されている。 BigIntsは任意の大きさの整数の扱いを可能にする。 TypeScript 3.2は、BigIntsの型チェックを追加し、TypeScript esnext
ターゲットを介してBigIntをサポートする環境用のBigIntリテラルを発行する。
BigIntsは数学演算子に対して異なる動作をするため、TypeScriptチームはBigIntをサポートしないで環境に対して下位レベルのサポートをすぐに提供する予定はない。今日、これはBigIntサポートがNode.js 11+、Chrome 67+、および同様のバージョンのChromiumをベースにしたブラウザでのみ機能することを意味する。 Firefox、Safari、EdgeはすべてBigIntの実装に取り組んでいると報告している。
TypeScript 3.2のその他の改良点は次のとおりである。
- 和集合判別式における非ユニット型の許可
- JavaScriptでのObject.definePropertyプロパティ割り当てのサポート
--showConfig
を使用して暗黙の設定オブジェクトのコンソールへの印刷をサポート- リストと連鎖呼び出しのフォーマットとインデントを改善
dts-gen
を使ってローカルの@types
パッケージのスキャフォールディング- 仲介する
unknown
型のアサーションの追加 - 省略された
new
キーワードを追加
TypeScript 3.2リリースにおけるこれらおよびその他の変更の詳細については、TypeScriptロードマップを確認してください。
TypeScript 3.3に対してすでに作業が開始されている。Partial型引数推論が最初に計画されている機能である。この変更により、_は型推論が行われる場所のプレースホルダーとして型引数リストに現れるようになり、ユーザはデフォルトのリスト内の変数を明示的に指定せずにデフォルトでオーバーライドさせたり、別の変数から推論させることができる。
TypeScript 3.3で導入される可能性があるTypeScriptロードマップのもう1つの主な機能は、ESデコレータの提案に対する最近の変更に対する整合である。
TypeScriptは、Apache 2ライセンスの下で利用可能なオープンソースソフトウェアである。コントリビューションとフィードバックはTypeScript GitHubプロジェクトを通して奨励されており、その際はTypeScriptコントリビューションガイドラインとマイクロソフトのオープンソース行動規範に従ってください。
Rate this Article
- Editor Review
- Chief Editor Action