BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース TypeScript 2.9はES.Nextをサポートしてリリースされた

TypeScript 2.9はES.Nextをサポートしてリリースされた

原文(投稿日:2018/05/31)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

TypeScript 2.9は、言語がいくつか改善されている。ES.Nextのimport.meta、keyofのシンボルと数値リテラル、マップされたオブジェクト型(mapped object types)がサポートされている。

ES.Nextのimport.meta提案は、ステージ3プロポーザルになっており、ES2019に含まれる予定だ。この機能では、ホスト環境にモジュール内の評価に便利なモジュール固有情報を提供できる。TypeScript 2.9はimport.metaのサポートを含んでいる。

TypeScriptのプログラムマネージャーであるDaniel Rosenwasser氏はTypeScript 2.9以前の型のインポートに問題があったと認識している:

TypeScriptにおける長期的な問題点のひとつは、ファイルの先頭にimportを含める以外に他のモジュール内の型や、モジュールの型自身の型を参照できないことであった。いくつかのケースにおいて、これは単に便宜上の問題だが、ひとつの型の使用法を説明するためだけにファイルの最初にimportを追加したいこともあるだろう。

TypeScript 2.9はこの問題を解決している。型定義を取得するためだけにモジュールをインポートする必要はなくなる:

import * as _foo from "foo";

export async function bar() {
    let foo: typeof _foo = await import("foo");
}

エンジニアは必要に応じて型をインポートできる:

export async function bar() {
    let foo: typeof import("./foo") = await import("./foo");
}

TypeScript 2.9における他の変更は、ECMAScript標準に準拠していることだ。ECMAScript標準に準拠するために、TypeScript 2.9では残りのパラメータの末尾のコンマは許可されなくなった。型引数は、ジェネリックタグ付きテンプレートで利用可能になり、ES2015のテンプレート構文の作業がより簡単になった。

ES.Nextの準拠を超えて、TypeScript 2.9はNode.jsとReactなど他の環境での開発体験の改善もリリースした。

Node.jsエンジニアはモジュールを解決するとき、JSONファイルのインポートをESモジュールとして使うことを期待しており、Nodeとして指定され、--resolveJsonModuleフラグをtrueにすることで、それができるようになった。

ReactのJSX構文のユーザーは、以前はTypeScriptのJSXサポートに制限であった、JSXの開始と自己閉じタグで、型引数の解析とチェックができるようになった。

新しい--declarationMapフラグは--declarationフラグと組み合わせることで、TypeScriptで.d.ts.mapソースマップファイルと.d.tsファイルが出力できるようになった。TypeScript Language Servicesはdeclaration-fileベースの定義場所の元ソースにマップできる。

TypeScript 2.9 のもう一つの重要な追加機能は、keyofとマップされたオブジェクト型で、symbolと数値リテラルがサポートされたことだ。keyof演算子は、TypeScriptがユニークなsymbol型が以前からあるため、keyofはシンボリックキーを認識することはない。

TypeScript 2.9は、ユニークsymbolsと同様に数値リテラル型でもkeyofの振る舞いを変更する。これは破壊的な変更なため、--keyofStringsOnlyフラグで、TypeScript 2.9以前の振る舞いに戻すことができる。

もうひとつの破壊的な変更として、strictNullChecksモードでは、ジェネリック型パラメータがプリミティブ型で置き換えられる可能性があるため、制約のない型パラメータはオブジェクトに割り当てることができなくなる。

診断と言語サービスのいくつかの改善は、TypeScript 2.9リリースの一部であり、プライベートフィールドからgetterとsetter記述への変換や、TypeScriptファイル内のrequireをES importステートメントへの変換などのリファクタリングサービスも含まれている。

TypeScript 2.9は、npm install -g typescriptコマンドで利用できるようになり、Apache 2ライセンスで提供されている。コントリビューションとフィードバックは、TypeScript GitHubプロジェクトにて歓迎されている。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT