Microsoft、プログラミング言語「TypeScript 3.6」を公開開発者エクスペリエンスを向上

Microsoftはオープンソースプログラミング言語の最新版「TypeScript 3.6」を公開した。識別子内のUnicode文字サポートの改善や、SystemJSにおけるimport.metaサポートなどが特徴だ。

» 2019年08月30日 16時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 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の主な特徴は次の通り。

識別子内のUnicode文字サポートの改善

 TypeScript 3.6では、ECMAScript 2015以降をターゲットにしている場合の識別子の出力(emit)時におけるUnicode文字サポートを改善した。

 従来は次のようなコードを記述できなかったが、新版では「'--target es2015'」を指定することで可能になった。

SystemJSにおけるimport.metaサポート

 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);
    }
  };
});

アンビエントコンテキストでgetアクセサとsetアクセサが使用可能に

 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;
}

「--build」と「--incremental」をサポートするAPIを追加

 TypeScript 3.6では、プロジェクト参照と差分プログラムビルドに対応するため、2種類のAPIを公開した。

 --incrementalビルドの作成では、新たにcreateIncrementalProgram APIとcreateIncrementalCompilerHost APIを利用できる。新しく公開されたreadBuilderProgram関数を使ってこのAPIによって生成された.tsbuildinfoファイルの古いプログラムインスタンスを、リハイドレート(更新)することもできる。

 プロジェクト参照を利用するためのcreateSolutionBuilder関数も新たに公開した。この関数は、新タイプのSolutionBuilderのインスタンスを返す。

TypeScript Playgroundの更新

 TypeScript公式のPlayground(試用サイト)では、次のような多くの新しいオプションをサポートした。

  • targetオプション(ユーザーはes5からes3、es2015、esnextなどに切り替えることができる)
  • 全ての厳密性フラグ(strictを含む)
  • プレーンJavaScriptファイルのサポート(allowJSとオプションのcheckJsを使用)

 なお、TypeScript 3.6では、β版で取り入れた次のような機能を利用できる(詳細は関連記事を参照)。

  • 強く型付けされるジェネレータとイテレータ
  • より正確な配列スプレッド
  • Promiseに関連する開発者エクスペリエンスの向上
  • コード編集時にセミコロンの有無を確認

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。