BT

TypeScript 2.8リリースには条件付き型が含まれています

| 作者: Dylan Schiemann フォローする 8 人のフォロワー , 翻訳者 大橋 勇希 フォローする 0 人のフォロワー 投稿日 2018年4月8日. 推定読書時間: 4 分 |

原文(投稿日:2018/04/05)へのリンク

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経由でnpminstall -g typescript コマンドを使用するかGitHub経由で入手できます。TypeScript 2.9の取り組みはすでに開始されており、5月下旬にリリースが予定されています。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT