BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TypeScript 2.0ベータではoption型や判別共用体などが利用可能

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

ブックマーク

原文(投稿日: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を実行すること。

この記事に星をつける

おすすめ度
スタイル

BT