A note to our readers: You asked so we have developed a set of features that allow you to reduce the noise: you can get email and web notifications for topics you are interested in. Learn more about our new features.
TypeScript 2.8が、いくつかのメジャー機能とバグ修正と共にリリースされた。 最も重大な追加は条件付き型で、エンジニアは他の型に基づいて型を選択できる新しい構造です。
条件付き型はジェネリックスと組み合わせが最も有用です。もしフレームワークがAPIを通して同じ選択を繰り返さなければならない場合、面倒なプロセスになります。JavaScriptが値の特徴に基づいて実行時に決定する方法と同様で条件付き型はTypeScriptが他の型の特徴に基づいて型システム内で決定することを可能にします。
TypeScriptチームに提供された例は次の冗長なAPIを置き換えることを示しています:
interface Id { id: number, /* other fields */ }
interface Name { name: string, /* other fields */ }
declare function createLabel(id: number): Id;
declare function createLabel(name: string): Name;
declare function createLabel(name: string | number): Id | Name;
より柔軟なインターフェイス:
type IdOrName<T extends number | string> =
T extends number ? Id : Name;
declare function createLabel<T extends number | string>(idOrName: T):
T extends number ? Id : Name;
条件付き型は手動で型を取得するのではなくinferキーワードを使用して型推論のサポートを追加します。TypeScriptチームに提供された例は、配列型を要素型にフラットにするFlattenを作成します:
type Flatten<T> = T extends any[] ? T[number] : T;
inferはこれを簡単にできます:
type Flatten<T> = T extends Array<infer U> ? U : T;
条件付き型は、また条件付き型の共用体型で配布できるようにすることで、共用体型を改善します。
さらに、TypeScriptはlib.d.tsを経て条件付き型を活用するいくつかの新しい型エイリアス(Exclude、Extract、InstanceType、NonNullable、ReturnType)を追加します。 したがって、条件付き型はTypeScriptチームが言語に共通の型指定パターンをより効率的に追加することを容易にしました。
TypeScript 2.8リリースではJavaScriptファイルからTypeScript定義ファイルの作成を切り離すための--emitDeclarationOnly
フラグも追加され、Babel7を使用してTypeScriptコードをトランスパイルするプロセスが洗練されました。
ReactとJSXのユーザーはプラグマコメントとJSXの解決について、いくつかの改良点を受けています。
Mapped type修飾子は、- 演算子を使用して修飾子を削除することも、各プロパティからオプションを削除する新しいRequired
型を使用して修飾子を削除できるようになりました。
その他の小さい機能強化として、ESモジュールのインポートを整理するためのユーティリティや初期化されていないクラスのプロパティチェックの改善があります。
全体的にTypeScript 2.8リリースには、いくつかの改善が施され、そのほとんどは条件付き型の導入により構築され、より複雑な型定義を表現する方法が改善されています。
TypeScript 2.8は、npm経由でnpm
install -g typescript
コマンドを使用するかGitHub経由で入手できます。TypeScript 2.9の取り組みはすでに開始されており、5月下旬にリリースが予定されています。
Rate this Article
- Editor Review
- Chief Editor Action