Microsoft、プログラミング言語「TypeScript 3.8」のβ版を公開:2020年2月に正式リリース予定
Microsoftは「TypeScript 3.8」のβ版を公開した。TypeScript 3.8は、ECMAScript規格の新機能や強化機能に加え、型のみのインポート/エクスポートのための新構文など、多くの新機能を提供する。
Microsoftは2020年1月10日(米国時間)、オープンソースのプログラミング言語の最新版「TypeScript 3.8」のβ版を公開した。このβ版には、2020年2月にリリース予定の正式版が提供する新機能を全て搭載した。
TypeScriptは、静的型付けができる言語で、JavaScriptのスーパーセット。ECMA規格に従った最新のJavaScriptの機能を、古いWebブラウザやランタイムが扱えるようにコンパイルすることもできる。
TypeScript 3.8のβ版は、NuGetを使うか、次のコマンドラインのように、npmを使ってインストールできる(β版であるため、「@beta」が必要)。
npm install typescript @ beta
TypeScript 3.8は「Visual Studio 2019」「Visual Studio 2017」の他、「Visual Studio Code」と「Sublime Text」でも利用できる。TypeScript 3.8の主な特徴は次の通り。
型のみのインポートとエクスポートに対応、分かりやすいコード記述を助ける
TypeScript 3.8では、インポートとエクスポートをユーザーがよりきめ細かく制御できるように、型のみのインポート、エクスポートのための新しい構文を導入した。
import type { SomeThing } from "./some-module.js"; export type { SomeThing };
「import type」は、型の注釈と宣言のみをインポートする。実行時には常時完全に消去されるので、何も残らない。同様に、「export type」は、型コンテキストに使えるエクスポートのみを提供し、TypeScriptの出力からは消去される。
クラスには実行時の値と設計時の型がある。import typeを使用してクラスをインポートする場合、クラスからの拡張などはできない。
ECMAScriptのプライベートフィールドに対応
TypeScript 3.8は、ステージ3のクラスフィールド提案が含むECMAScriptのプライベートフィールドをサポートする。
class Person { #name: string constructor(name: string) { this.#name = name; } greet() { console.log(`Hello, my name is ${this.#name}!`); } } let jeremy = new Person("Jeremy Bearimy"); jeremy.#name // ~~~~~ // Property '#name' is not accessible outside class 'Person' // because it has a private identifier.
通常のプロパティ(プライベート修飾子で宣言されたものも含む)とは異なり、プライベートフィールドには、留意しなくてはならない幾つかのルールがある。主なものは次の通り。
- プライベートフィールドは、「#」で始まる。「プライベートネーム」と呼ばれる場合もある
- 全てのプライベートフィールド名は、そのフィールドを含むクラスにおいてのみ有効。publicやprivateなどのTypeScriptアクセシビリティー修飾子は、privateフィールドでは使用できない
- プライベートフィールドは、それを含むクラスの外部からはアクセスできず、検知することもできない
export * as ns構文を導入、広く使われているコードパターンに対応
他のモジュールの全メンバーを単一のメンバーとしてエクスポーズする単一のエントリポイントが広く使われている。
import * as utilities from "./utilities.js"; export { utilities };
このため、ECMAScript 2020は最近、このパターンをサポートする新しい構文を追加した。
export * as utilities from "./utilities.js";
これはJavaScriptの改良として有用であり、TypeScript 3.8もこの構文を実装した。モジュールターゲットがECMAScript 2020より前のバージョンである場合、TypeScriptは、最初のコードスニペットの行に従って出力する。
トップレベルawaitを導入して同期処理を補完
TypeScript 3.8では、ECMAScriptに導入予定の「トップレベルawait」という便利な機能が使えるようになった。
これまでJavaScriptでは(同様の機能を持つ他の大半の言語と同様に)、awaitは、async関数の本体内でのみ使用できた。トップレベルawait機能では、モジュールのトップレベルでawaitを使用できる。
const response = await fetch("..."); const greeting = await response.text(); console.log(greeting); // Make sure we're a module export {};
JSDocプロパティ修飾子を導入、型チェックを強化
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 利用者調査「State of JavaScript」最新版が公開、2万人強が参加
JavaScriptの利用動向に関する年次調査(2019年版)が発表された。開発者2万1717人の回答を集計、分析したものだ。勢いのあるフレームワークやツール、JavaScriptのスーパーセット言語が分かる。 - 求人情報から見えた「JavaScriptフロントエンド開発者に必要なスキル」 CV Compiler
オンライン履歴書改善サービス「CV Compiler」の提供元が、AngelList、StackOverflow、LinkedIn、その他IT企業の人材採用ページから、JavaScript開発者の求人情報約300件を収集し、頻繁に言及される募集条件を調査した結果を発表した。 - Microsoft、プログラミング言語「TypeScript 3.7」を公開
Microsoftは、多数の新機能を提供するオープンソースプログラミング言語の最新版「TypeScript 3.7」を公開した。オプショナルチェイニングの実装やnullish coalescing演算子の導入といった改善を加えた。