BT

TypeScript 2.0ベータではoption型や判別共用体などが利用可能

| 作者: Sergio De Simone フォローする 18 人のフォロワー , 翻訳者 猪股 健太郎 フォローする 0 人のフォロワー 投稿日 2016年8月8日. 推定読書時間: 3 分 |

原文(投稿日:2016/07/13)へのリンク

MicrosoftのDaniel RosenwasserがTypeScript 2.0のベータリリースを発表した。このリリースによって、当言語に多くの新機能がもたらされる。null非許容型や、型の制御フロー解析、そして判別共用体などである。

null非許容型はJavaScriptで最も一般的なバグの原因であるnullundefinedを解決しようとするものであるとRosenwasserは言う。null非許容型は変数がoption型として宣言されていなければ、nullを代入することを禁じるものだ。

let foo1: string = null; // エラー!
let foo2: string | null = null; // Option型

上で示される通り、option型はTypeScript 2.0のもう一つの新機能であるunion型として記述される。省略可能な引数とプロパティは自動的にoption型に属するものと推論される。option型を使うときには!演算子を用いることもできるし、型ガードを用いることもできる。

let s: string | undefined = "string"; // 正常
if (s) {
    f(s);
}
let upperCase = s!.toUpperCase(); // 正常
let lowerCase = foo2.toLowerCase(); // エラー

TypeScript 2.0におけるnull非許容型は、--strictNullChecksフラグを使うことにより有効化される。

TypeScript 2.0では、ローカル変数と引数に対して制御フローに基づいた型の解析も可能になる。これはTypeScriptの型解析が大きく改善することを意味している。代入による影響が反映され、returnbreakといった制御フローの構成物を含められるように、2.0以前の型解析が拡張される。

TypeScript 2.0の新機能には、privateおよびprotectedコンストラクターもある。privateprotectedのキーワードを使ってコンストラクターを宣言できる。さらに、抽象プロパティも定義できるようになった。サブクラスに対し、抽象プロパティのアクセサー定義を強制する。

abstract class A {
  abstract p;
}
class B extends A {
  get p() {...}
  set p(v) {...}
}

上記のnullundefined型に加え、TypeScript 2.0はneverを新しく導入する。この型が表すのは、決してreturnしない関数のように決して存在しない値や、決してtrueにならないガード内の変数などの型である。

// never型を返す関数は決して末尾に到達してはならない
function error(message: string): never {
    throw new Error(message);
}

TypeScript 2.0には他にも多くの新機能がある。読み取り専用のプロパティとインデックスシグネチャ、これまで暗黙的だった関数のthis引数に対する型指定、モジュール解決の強化などなど

TypeScript 2.0ベータをインストールするには、Visual Studio 2015向けのものをダウンロードするか(VS 2015 Update 3が必要)、または、npm install -g typescript@betaを実行すること。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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