TypeScriptチームはTypeScript 4.3のリリースを発表した。これにより、プロパティの書き込みタイプ、メソッドのより明示的な上書き、およびその他のいくつかの重要な事項が改善された。
TypeScriptプログラムマネージャーのDaniel Rosenwasser氏は、TypeScript 4.3以前の1つの重要な問題点について説明している。
JavaScriptでは、APIが渡された値を保存する前に変換するのが一般的です。これは、getterとsetterでもよくあることです。
TypeScript 4.3では、プロパティの読み取りと書き込みのための型が導入され、プロパティの取得と設定が改善されている。たとえば、setterはより広い範囲の型を受け入れることができ、setterコードは入力をgetterによって返されるフォーマットに変換できる。
TypeScriptでのクラスの拡張に関する1つの課題は、基になる基本クラスがリファクタリングされたときに起こる。基本クラスを拡張するクラスは、拡張するメソッドが変更されたことを認識していない可能性がある。この問題を軽減するために、TypeScript 4.3ではオーバーライドキーワードが追加されている。それが指定されると、TypeScriptは同じ名前のメソッドが基本クラスに存在することを確認し、存在しない場合はエラーをスローする。
TypeScript 4.3では--noImplicitOverride
フラグも追加された。これによって、オーバーライドキーワードが指定されていない限り、スーパークラスのメソッドをオーバーライドしようとするとエラーになる。
このTypeScriptリリースではメソッド、アクセサー、静的メンバーにプライベート名を設定できるようにすることで、以前あったプライベートクラスフィールドのサポートが追加されている。TypeScript 4.3は、抽象クラスのコンストラクターパラメーターもサポートする。
TypeScript 4.3では、ジェネリック値の型を絞り込むロジックも改善されており、TypeScriptエラーが誤って発生するいくつかのシナリオが修正されている。
コードを書くときのいくつかの重要な場所で、型システムは型の制約を考慮する。TypeScriptは、絞り込んだタイプの制約を取得して、我々に考慮しなければならにデータを提供する。
TypeScript 4.3には、さらに次のような改善が加えられている。
- テンプレート文字列型の改善
- 常にTrueを返すPromiseのチェック
static
インデックス署名- より小さな
.tsbuildinfo
ファイルとより高速ビルド - より効率的なコンパイル
- ステートメントのオートコンプリートのインポート
- @linkタグのサポート
TypeScript 4.3でのこれらの多くの改善により、アップグレード時に考慮すべき重要な変更がいくつかある。
- 組み込みの
lib.d.ts
は、Mozillaのbrowser-compat-data
を利用して、どのブラウザも実装していないAPIを削除する - 常にTrueを返すPromiseのチェックに対するエラー
- Union列挙型は任意の数値と比較できない
TypeScript 4.4の作業はすでに進行中であり、2021年8月に予定されている。TypeScript 4.4のリリース目標の一部には、より厳格なOptional/MissingやUndefinedおよびNode.jsのESMパッケージエクスポートのサポートが含まれる。
TypeScriptは、Apache 2ライセンスの下で入手可能なオープンソースソフトウェアである。TypeScript GitHubプロジェクトを介したコントリビューションとフィードバックは奨励されている。その際、TypeScriptコントリビューションガイドラインとMicrosoftオープンソース行動規範に従う必要がある。