BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TypeScript 2.2がリリース、JavaScript開発者の期待により多く対応

TypeScript 2.2がリリース、JavaScript開発者の期待により多く対応

原文(投稿日:2017/03/03)へのリンク

MicrosoftがTypeScript言語のバージョン2.2をリリースした。object型の導入と開発者の生産性向上が重点だ。

毎日の作業という面でのバージョン2.2は、単純なミスに開発者が費やす時間を削減するための便利な機能が数多く提供されている。不足しているimportの追加や未使用の宣言の削除などの機能は、他言語に比較した場合のTypeScriptのツーリングを、より充実したものにする。TypeScript/JavaScriptで非常に多いミスは、thisの正しい使用を忘れることだ。TypeScript 2.2の発表記事から引用した下記のイメージでは、新ツールの改善点の多くがデモンストレーションされている。

VS Codeを使用する場合には、VS Code 1.10でクイックフィックスが使用できる。Ctrl+.キーの入力によってアクセス可能だ。

特に重要な改善点のひとつが、JavaScript開発者に馴染みの深い方法で文字列インデックスを使用する機能だ。JavaScriptでは、オブジェクトのプロパティにアクセスする2つの方法がある。

var y = x["prop"];
var z = x.prop;

この例では、yzの値は同じになる。いずれもxpropプロパティをアクセスする方法として有効だからだ。これまでのTypeScriptでは、インデックスシグネチャを伴って宣言された以下のオブジェクト:

interface Foo {
    // ここではstringインデックスシグネチャ:
    [prop: string]: boolean;
}

は、前述の最初の方法でのみアクセス可能だった。経験豊富なJavaScript開発者ならば、前述の2つの方法のどちらでもプロパティにアクセスできて当然だと考えるはずだ。バージョン2.2ではこの自然な振る舞いが、期待通りに動作するようになった。

新たに導入されたobject型は、プリミティブデータ型以外のすべてになることが可能だ。歓迎される新機能である反面、この新たな型の導入は、言語の新規学習者を混乱させるかも知れない。新たな機能で何が可能になるのかを本当に理解するためには、TypeScriptプログラムマネージャのDaniel Rosenwasser氏の発表記事にある下記の文章を注意深く読む必要がある。

object{}[/0}型やObject型とは ... 構造的な互換性の面で区別されます。空のオブジェクト型({})はプリミティブ型ともマッチするため、Object.createのような、プリミティブではない本当のオブジェクトのみを期待するAPIは使用できませんでした。一方のobjectは、数値の割り当てを正しく拒否できるので、適切な処理が可能になります。

上記文章中でフォントが使い分けられているのは、特定のobject型を話題としている部分と、一般的概念としてのオブジェクトについて説明している部分を理解しやすくするためである。オブジェクト型の相違に関しては、Marius Schulz氏がさらに詳細な記事を書いている。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT