BT

TypeScript 2.0がリリース

| 作者: James Chesters フォローする 1 人のフォロワー , 翻訳者 猪股 健太郎 フォローする 0 人のフォロワー 投稿日 2016年10月12日. 推定読書時間: 4 分 |

原文(投稿日:2016/09/28)へのリンク

MicrosoftがTypeScript 2.0をリリースした。型定義ファイル取得の簡略化、ヌル非許容型、Readonly修飾子が含まれる。

TypeScriptのプログラムマネージャーであるDaniel Rosenwasserが語ったところによると、「ECMAScript仕様との密接な協力、JavaScriptライブラリーやツールの広範なサポート、主要なエディターのすべてに第一級のエディット体験をもたらすランゲージサポート機構」をもたらしたこのリリースについて、TypeScriptチームは「とても喜んでいる」とのことである。

TypeScript 2.0では開発者が型定義ファイルを入手・利用するのが容易になる。Rosenwasserも認めるところだが、今までは「型定義ファイルの入手方法や依存関係の管理を学ぶこと」が利用者にとって大きな苦痛だった。しかし2.0ではnpm install --save @types/lodashというコマンドでスコープ指定された@types/lodashパッケージをインストールすれば、開発者のプログラムでlodashをインポートした時にTypeScript 2.0は型定義を自動的に参照する。

2.0リリースのそのほかの新機能は、ヌル非許容型の導入である。TypeScriptはそもそもすべての型がヌルを許容するとして言語設計されていたが、実際にはnull/undefinedにまつわる問題の回避策を何も提供していなかったと言語チームも認めている。それと比べると今回のリリースでは、nullundefinedには独自の型が付けられており、null/undefined値を許容したい場所では開発者が明示的にそれを表現することが可能になっている。これは下記の動画(TypeScriptチームの転載許諾済)でデモを見ることができる。

TypeScript 2.0ではプロパティは読み取り専用として宣言できるようになり、setアクセサーのないgetアクセサーだけの宣言も読み取り専用とみなされるようになった。

class Person {
    readonly name: string;

    constructor(name: string) {
        if (name.length < 1) {
            throw new Error("Empty name!");
        }

        this.name = name;
    }
}

// エラー! 'name' は読み取り専用。
new Person("Daniel").name = "Dan";

Microsoftのリリースに対するコミュニティの反応はおおむね好意的なものだった。HackerNewsでは、Ed Rochenskiが次のようにコメントした

新機能のいくつかを早く私たちの実稼働アプリでも使いたい。Typescriptは私にとってJavaScript開発の架け橋だったし今もそうだ。個人的な意見だがJavaScriptは長い間壊れた言語だった。TypeScriptなしで私が同じようにやれたとは思えない。

ヌル非許容型、タグ付き共用体、型定義ファイル取得の容易化は、私にとってこのリリースの最大の利益だ。

Rosenwasserの投稿に、Allenというユーザーがコメント欄で質問した。「我々のコードベースではstrictNullChecksを使いたいと思うが、ライブラリー型定義のいくつかまたは全てではヌルチェックを緩める方向に戻すよう指示する方法はあるのか?」Allen氏にとっては、外部の型定義でstrictNullChecksを利用するには問題があったということである。使われているライブラリーの型定義が厳密にはヌル安全ではなかったためだ。

Rosenwasserは答えた。「現在のところ、strictNullChecksのためには依存する型定義に修正を加えなければならない。サードパーティ製の.d.tsファイルの多くはstrictNullChecksにかかわらず機能するが、もしそうでないものがあれば、DefinitelyTypedのtypes-2.0ブランチにプルリクエストを送ってもらえるとありがたい。」

TypeScriptのロードマップ上にある機能の中に、“ES2017の、オブジェクトのプロパティに対する残余/スプレッド”や、“関数式/アロー関数のデコレーター”、“nodeのregister拡張のサポート(訳注:10/1現在はロードマップから削除されている)”などがある。TypeScriptプロジェクトのGitHub上に置かれたTypeScript 1.8からの改善点と変更点の詳細はこちら

TypeScriptはApacheライセンスでリリースされているオープンソースである。プロジェクトに貢献したいInfoQ読者はhttps://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.mdを一読のこと。

この記事に星をつける

おすすめ度
スタイル

こんにちは

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