読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールと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
- Editor Review
- Chief Editor Action