BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TypeScript 2.7が提供開始された

TypeScript 2.7が提供開始された

ブックマーク

原文(投稿日:尾崎 義尚)へのリンク

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

TypeScript 2.7がリリースされ、いくつかの主要機能とバグ修正が提供された。ハイライトとして、クラスプロパティの割り当てチェック、固定長タプル、オブジェクトリテラルの型推論の改善がある。全体として、このリリースによって、タイプシステム、ES2015+機能、TypeScript開発者の体験全体が改善される。

TypeScript 2.7リリースには、TypeScript 2.7を活用したコードベースにアップグレードするときに開発者が気を付けなくてはならない、いくつかの破壊的変更が導入されている。

TypeScriptの現在のリリースプランについて尋ねられた時、プログラムマネージャーのDaniel Rosenwasser氏は次のように述べた:

私たちは採用の容易さに焦点を当てており、既存のユーザーがTypeScriptへの投資に新しい価値を見出していることを知っています。前者は通常、始めるときの抵抗をなくすことであり、後者は表現力や安全性の向上です。

たとえば既存のTypeScriptユーザーは、クラスの初期化の前後で厳密なチェックを要求していた。厳密な関数型チェックが追加されたTypeScript 2.6に続いて、2.7では--strictPropertyInitializationフラグでクラスの厳密なプロパティ初期化チェックが追加された。このフラグチェックは、クラスの各インスタンスプロパティがコンストラクタのボディか、プロパティ初期化子によって初期化されるかをチェックする。--strictフラグを利用している開発者は、ソースコードを2.7にアップグレードしたときに自動的にチェックが追加される。TypeScriptのstrictフラグを利用することで、開発者は追加の型エラーや予期しない振る舞いを見つけることができる。

TypeScriptアナライザが代入を証明できない場合でも、変数に確実に代入されるようにTypeScriptの制御フローアナライザが指示するための代入のアサーション定義ができるようになった。

TypeScriptアーキテクトのAnders Hejlsberg氏による、オブジェクトリテラルの方推論の改善では:

同じコンテキストで発生する複数のオブジェクトリテラルに対する型推論を改善します。複数オブジェクトリテラルタイプが共用体型に寄与している場合、共用体の各コンストラクタのすべてのプロパティが存在するようにオブジェクトリテラルタイプを標準化します。
const obj = test ? { text: "hello" } : {}; // { text: string } | { text?: undefined } 
const s = obj.text; // string | undefined
以前はobjの型{}を推論していましたが、objがプロパティを持たないように見えるため2行目でエラーが発生していました。これは明らかに理想的ではありませんでした。

さらに言語レベルの改良には、共用体とinstanceof式の構造的な同一クラス処理in演算子から推測されるよりも優れた型ガードが含まれる。

TypeScript 2.7はまた、ES2015+のサポートも改善されている。プロパティは、名前付きconst定義されたシンボルが可能になり、インターフェイス、クラス、タイプリテラルで計算されたプロパティ名の一部として、IdentifierPropertyAccessExpressionが使えるようになった。

内部的にはCJSモジュールよりもTypeScriptはESモジュールを活用しており、--esModuleInteropフラグでimport d from "cjs"をサポートすることにより、CommonJSモジュールとの相互運用性が向上した。Rosenwasser氏はInfoQにこの機能の背後にある動機について説明した:

モジュールの相互運用戦略に摩擦があったため、BabelユーザーがTypeScriptを使用することが難しくなりました。これは新しくTypeScriptユーザーになることの障壁であり、--esModuleInteropフラグをこのリリースで優先的に作った理由でもあります。もちろん、ECMAScript標準も更新されており、私たちがかかわっていて、言語の成長において非常に気にしています。

ES2018の一部となる予定のステージ3にある数値セパレーター提案はTypeScriptに含まれており、TypeScriptは毎年JavaScript言語の状態を更新している。

TypeScript 2.7のいくつかの変更は、開発者の体験を対象にしている。webpackやGulpのような開発ツールは、新しいインクリメンタルビルダーコンパイラーAPIの恩恵を得ることができる。この変更により、インクリメンタル更新により、プロジェクト全体の再構築が必要なくなり、ツールによるリソースだけの更新がより簡単になる。さらにIDEはTypeScript Language Services APIが提供されており、開発者はファイル内で特定されたすべての問題を自動的に修正できる

TypeScript 2.7はnpm install -g typescriptコマンド、またはGitHubにて提供されている。TypeScript 2.8の取り組みはすでに始まっており、3月下旬にリリースが予定されている。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT