Microsoftはオープンソースプログラミング言語の最新版「TypeScript 3.6」を公開した。識別子内のUnicode文字サポートの改善や、SystemJSにおけるimport.metaサポートなどが特徴だ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2019年8月28日(米国時間)、オープンソースのプログラミング言語の最新版「TypeScript 3.6」を公開した。
TypeScriptは、静的型付けができる言語で、JavaScriptのスーパーセット。EC規格に従った最新のJavaScriptの機能を、古いWebブラウザやランタイムが扱えるようにコンパイルすることもできる。
TypeScript 3.6は、NuGetを使うか、次のコマンドラインのように、npmを使ってインストールできる。
npm install -g typescript
TypeScript 3.6は「Visual Studio 2019」「Visual Studio 2017」の他、「Visual Studio Code」と「Sublime Text」でも利用できる。言語とコンパイラに関するTypeScript 3.6の主な特徴は次の通り。
TypeScript 3.6では、ECMAScript 2015以降をターゲットにしている場合の識別子の出力(emit)時におけるUnicode文字サポートを改善した。
従来は次のようなコードを記述できなかったが、新版では「'--target es2015'」を指定することで可能になった。
TypeScript 3.6は、moduleターゲットがsystemに設定されている場合、import.metaからcontext.metaへの変換をサポートする。
// This module: console.log(import.meta.url) // gets turned into the following: System.register([], function (exports, context) { return { setters: [], execute: function () { console.log(context.meta.url); } }; });
TypeScriptの従来バージョンでは、declare-dクラス内や.d.tsファイル内のようなアンビエントコンテキストではgetアクセサとsetアクセサを使用できなかった。これらのプロパティへの書き込みと読み出しに関して、アクセサがプロパティと区別されていなかったからだ。
TypeScript 3.6では、アンビエントコンテキストでもgetterとsetterを記述できるようになった。なお、TypeScript 3.7ではこの機能をさらに改善する予定だ。
declare class Foo { // Allowed in 3.6+. get x(): number; set x(val: number): void; }
TypeScriptの従来バージョンでは、どのような場合でも、クラスと関数をマージするとエラーが起きた。
だが、今回からアンビエントクラスと関数(declare修飾子を持つクラス/関数、.d.tsファイル内のクラス/関数)をマージできるようになった。これにより、次のようなコードを記述できるようになった。TypeScript 3.7ではこの機能をさらに改善する予定だ。
export declare function Point2D(x: number, y: number): Point2D; export declare class Point2D { x: number; y: number; constructor(x: number, y: number); }
従来は次のように記述する必要があった。
export interface Point2D { x: number; y: number; } export declare var Point2D: { (x: number, y: number): Point2D; new (x: number, y: number): Point2D; }
TypeScript 3.6では、プロジェクト参照と差分プログラムビルドに対応するため、2種類のAPIを公開した。
--incrementalビルドの作成では、新たにcreateIncrementalProgram APIとcreateIncrementalCompilerHost APIを利用できる。新しく公開されたreadBuilderProgram関数を使ってこのAPIによって生成された.tsbuildinfoファイルの古いプログラムインスタンスを、リハイドレート(更新)することもできる。
プロジェクト参照を利用するためのcreateSolutionBuilder関数も新たに公開した。この関数は、新タイプのSolutionBuilderのインスタンスを返す。
TypeScript公式のPlayground(試用サイト)では、次のような多くの新しいオプションをサポートした。
なお、TypeScript 3.6では、β版で取り入れた次のような機能を利用できる(詳細は関連記事を参照)。
Copyright © ITmedia, Inc. All Rights Reserved.