TypeScript

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
TypeScript
TypeScript Logo.png
パラダイム マルチパラダイム: スクリプト, オブジェクト指向, 構造化, 命令型, 関数型, ジェネリック
登場時期 2012年10月1日 (2012-10-01)[1]
設計者 マイクロソフト
開発者 マイクロソフト
最新リリース 2.0.3 / 2016年9月22日(2か月前) (2016-09-22
影響を受けた言語 JavaScript, Java, C#
影響を与えた言語 AtScript
ライセンス Apache License 2.0
ウェブサイト www.typescriptlang.org
拡張子 .ts

TypeScriptマイクロソフトによって開発され、メンテナンスされているフリーオープンソースのプログラミング言語である。TypeScript は JavaScript に対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えた厳密なスーパーセットとなっている。C# のリードアーキテクトであり、DelphiTurbo Pascalの開発者でもあるアンダース・ヘルスバーグが TypeScript の開発に関わっている。 [2][3][4][5]。TypeScriptはクライアントサイド、あるいはサーバサイド(Node.js)で実行されるJavaScriptアプリケーションの開発に利用できる。

TypeScript は大規模なアプリケーションの開発のために設計されており、コンパイルすると JavaScript のソースコードを出力する。 [6]。TypeScriptはJavaScriptのスーパーセットであるため、既存のJavaScriptプログラムは、全て有効なTypeScriptプログラムとなる。

TypeScript は型定義ファイルをサポートしており、既存の JavaScript ライブラリに型情報を付与して利用できる。既存のオブジェクトファイルの構造を記述できるC/C++のヘッダファイルとよく似た仕組みである。これによって、その型定義ファイル内で定義された値を、他のプログラムがあたかも静的に型付けされたTypeScriptエンティティであるかのように利用することができるようになる。jQuery, MongoDB, D3.jsのような人気のあるライブラリのための、サードパーティーのヘッダファイルがある。Node.jsベーシック・モジュールのためのヘッダも入手可能で、Node.jsプログラムの開発もTypeScriptの中で行える[7]

TypeScriptのコンパイラはそれ自体がTypeScriptで書かれている。これはJavaScriptへのトランスコンパイラであり、Apache 2 Licenseの下でライセンスされている。

TypeScriptはMicrosoft Visual Studio 2013 Update 2以降でfirst-classプログラミング言語として、C# やその他のMicrosoft言語群とともに含まれるようになった。 [8]。 公式の拡張パックによりVisual Visual Studio 2012 でも TypeScript をサポート可能である[9]


歴史[編集]

TypeScriptは、Microsoft社で2年間かけて内部開発された後、2012年10月に初めて外部に公開された(version 0.8)[10][11]。発表から間もなく、ミゲル・デ・イカザは、この言語そのものについては称賛しつつも、Microsoft Visual Studio以外では成熟した統合開発環境(IDE)でのサポートがなく、LinuxおよびOS Xでは利用できないことには批判的であった[12][13]。2013年時点では、他のIDEでもサポートされており、特にEclipseでは、Palantir Technologies社が貢献したプラグインによりサポートされている[14][15]EmacsVimSublime などの多くのテキストエディターもTypeScriptをサポートしている[16]Atomプラグインも利用可能である[17]

2013年にリリースされたTypeScript 0.9では、総称型のサポートを追加した[18]。TypeScript 1.0は Build 2014会合でリリースされた[19]Visual Studio 2013 Update 2ではTypeScriptが組み込まれている[20]

2014年7月、開発チームは新しいTypeScriptコンパイラを発表し、パフォーマンスは5倍増加したと公称している。同時に、当初はCodePlex上で公開されていたソースコードはGitHubに移動された[21]

2016年9月22日、TypeScript 2.0がリリースされ、幾つかの機能が盛り込まれた。変数にnull値が代入されるのを防ぐオプション機能などが含まれる[22]

背景[編集]

TypeScriptは、マイクロソフトやその外部の顧客たちの間で、JavaScriptで大規模アプリケーション開発をする上での欠点を補うために作られた[23]。複雑なJavasScriptコードを扱うのは困難なことから、JavaScript言語の中でコンポーネント群を開発するのを容易にするための自作ツールが必要になった[24]

TypeScript の開発者は、標準との互換性や、クロスプラットフォームサポートを壊さないで済む解決策を模索した。現在の ECMAScript 言語標準が将来的にクラスベースオブジェクト指向をサポートする提案があることを踏まえ、TypeScript はその提案に基づくことになった。これにより、その提案に基づいたスーパーセットであり、幾つかの点で言語の文法を拡張したJavaScriptコンパイラへと至ることとなった。このコンパイラが、言語を拡張した部分を一般的な JavaScript へと変換する仕組みである。この意味では TypeScript は ECMAScript 2015 において期待されている機能を先取りするようなものであるともいえる。ECMAScript の提案にないが TypeScript に独自に搭載された機能として、静的言語解析を可能にする静的型付け機能(使用するかどうかは選択可能)がある。これは諸ツールや統合開発環境(IDE)によるサポートを容易にする。

言語の特長[編集]

TypeScript は JavaScript (ECMAScript 5) に次のような言語機能の拡張を加えたものである。

ECMAScript 6 由来

ECMAScript 7 由来

  • デコレーター
  • Async/Await

独自

構文的には、静的型付けやクラス、継承、インターフェイスのようなオブジェクト指向、名前空間などの機能を追加する、ECMA-262 言語標準のマイクロソフトによる実装である JScript.NET と TypeScript はよく似ている。

JavaScriptとの互換性[編集]

TypeScript はECMAScript 2015の厳密なスーパーセットであり、ECMAScript 2015はECMAScript 5(一般的にJavaScriptと呼ばれているもの)のスーパーセットである[26]。従って、JavaScriptプログラムは有効なTypeScriptプログラムでもあるので、TypeScriptプログラムはJavaScriptを境目なしに利用できる。

デフォルト設定の場合、コンパイラは現在主流な標準であるECMAScript 5を出力するが、ECMAScript 3や2015で使われていた構文を生成することもできる。

TypeScriptでは、既存のJavaScriptコードを使うことができる。つまり、人気のあるJavaScriptライブラリを取り入れることができ、他のJavaScriptからTypeScriptで作られたコードを呼ぶこともできる[27]。これらの外部ライブラリに対する型宣言はソースコードで与える。

型アノーテーション[編集]

TypeScriptはコンパイル時における型検査を可能にするために、型アノーテーションによる静的型付けの仕組みを提供している。この仕組みの利用は任意なので、この仕組みを無視して普通のJavaScriptの動的型付けを使うこともできる。

function add(left: number, right: number): number {
	return left + right;
}

プリミティブ型のためのアノーテーションはnumberbooleanstringである。弱い型付けあるいは動的型付けにする場合は、any型を用いる。

既にJavaScriptにコンパイルされた型を使うTypeScriptスクリプトから型情報を利用できるようにするために、型アノーテーションは別個の「宣言ファイル」に外出しすることが出来る。アノーテーションは既存のJavaScriptライブラリに対しても宣言でき、それは既にNode.jsjQueryに対して行われた。

型が与えられていない場合、TypeScriptコンパイラは型を推論するために型推論を使う。例えば、上のコードにおけるadd メソッドは、もし戻り値型が何も与えられていなかったとしても、number型を返すと推論される。これは引数leftrightnumber型であること、および「二つのnumber型を加算した結果は常にnumber型である」というコンパイラ側の知識に基づいている。しかし、明示的に戻り値型を指定しておけば、コンパイラがその正しさを検証してくれる。

宣言の不足により型推論が不可能な場合、動的なany型がデフォルトで使われる。any型の値に対する操作は、JavaScriptと同様の操作をサポートしているので、any型に対する操作については最低限の静的型検査が行われるだけである[28]

型宣言ファイル[編集]

TypeScriptをコンパイルするとき、「型宣言ファイル」(拡張子.d.ts)を生成するオプションがある。この型宣言ファイルは、コンパイルされてできたJavaScript内のコンポーネントへのインターフェイスの役割を果たす。コンパイラは、型宣言ファイルの作成過程で、関数やメソッドのコードの中身はすべて除去し、出力される型のシグネチャだけを残す。その結果として出来た型宣言ファイルには、出力されたJavaScriptライブラリまたはモジュールの仮想的なTypeScript型が記述してあり、第三者がTypeScriptを書くとき、この型宣言ファイルを読み込んで使うことが出来る。

この型宣言ファイルの概念は、C言語C++におけるヘッダファイルとよく似ている。

declare module arithmetics {
    add(left: number, right: number): number;
    subtract(left: number, right: number): number;
    multiply(left: number, right: number): number;
    divide(left: number, right: number): number;
}

既存のJavaScriptライブラリのための型宣言ファイルは、手書きで書くこともでき、それは既にjQueryやNode.jsに対して行われた。

jQuery, MongoDB, D3.js, Node.jsといった人気のあるJavaScriptライブラリに対する型宣言ファイルを多数集めたものが、GitHubのDefinitelyTyped[29]Typings Registryに公開されている。リポジトリから型宣言ファイルを検索しインストールするのを補助するためにtypingsというコマンドラインユーティリティが提供されている。

開発ツール[編集]

コンパイラ[編集]

TypeScript コンパイラtsc自体も TypeScript で作成されている(セルフホスティング)。これは通常のJavaScript にコンパイルでき、任意のホスト上のJavaScriptエンジン(たとえばブラウザなど)上で実行できる。ライセンスは Apache License 2.0 である。コンパイラ・パッケージはコンパイラを実行出来るスクリプトホストに同梱されてくる。Node.js等と共にコンパイラ・パッケージとして配布される場合もある。

また、JavaScriptで書かれたクライアントサイドのコンパイラのアルファ版もある。これはページロード中にTypeScriptコードを実行する[30]

現在のバージョンでは、コンパイラのデフォルト設定では ECMAScript 5 のコードが出力される。設定の変更で ECMAScript 2015 も出力できる。TypeScript の先行機能または独自機能は対象の ECMAScript バージョンで実行可能なコードに変換されるが、一部の機能はバージョンの若い ECMAScript では動作しない場合もある。

開発環境[編集]

以下の統合開発環境テキストエディタが TypeScript に対応している。

関連項目[編集]

注釈[編集]

  1. ^ TypeScript - Download: TypeScript 0.8.0
  2. ^ Microsoft takes the wraps off TypeScript, a superset of JavaScript | ZDNet
  3. ^ TypeScript: JavaScript Development at Application Scale - Somasegar's blog - Site Home - MSDN Blogs
  4. ^ Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? | ZDNet
  5. ^ Microsoft Augments Javascript for Large-scale Development CIO.com
  6. ^ Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? | Ars Technica
  7. ^ borisyankov/DefinitelyTyped”. GitHub. 2015年4月26日閲覧。
  8. ^ TypeScript Homepage, "Visual Studio includes TypeScript in the box, starting with Visual Studio 2013 Update 2"
  9. ^ TypeScript 1.0 Tools for Visual Studio 2012
  10. ^ Microsoft augments JavaScript for large-scale development”. InfoWorld. IDG (2012年10月1日). 2015年4月26日閲覧。
  11. ^ Turner, Jonathan (2014年4月2日). “Announcing TypeScript 1.0”. TypeScript Language team blog. Microsoft. 2015年4月26日閲覧。
  12. ^ ミゲル・デ・イカザ (2012年10月1日). “TypeScript: First Impressions”. 2012年10月12日閲覧。 “But TypeScript only delivers half of the value in using a strongly typed language to Unix developers: strong typing. Intellisense, code completion and refactoring are tools that are only available to Visual Studio Professional users on Windows. There is no Eclipse, MonoDevelop or Emacs support for any of the language features
  13. ^ Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?”. ZDNet (2012年10月1日). 2012年10月12日閲覧。 “And I think this is a pretty big misstep. If you're building web apps that run on anything other than Windows, you're likely using a Mac and most likely not using Visual Studio. You need the Visual Studio plug-in to get the IntelliSense. All you get without Visual Studio is the strong-typing. You don't get the productivity benefits you get from IntelliSense..”
  14. ^ TypeScript-Unterstützung für Eclipse”. heise Developer (2013年8月6日). 2015年4月26日閲覧。
  15. ^ TypeScript”. Eclipse Marketplace. Eclipse Foundation. 2015年4月26日閲覧。
  16. ^ Hillar, Gastón (2013年5月14日). “Working with TypeScript in Visual Studio 2012”. Dr. Dobb's Journal. 2015年4月26日閲覧。
  17. ^ TypeStrong: The only TypeScript package you will ever need”. 2016年7月21日閲覧。
  18. ^ TypeScript 0.9 arrives with new compiler, support for generics”. The Register (2013年6月18日). 2015年4月26日閲覧。
  19. ^ Hejlsberg, Anders (2014年4月2日). “TypeScript”. Channel 9. Microsoft. 2015年4月26日閲覧。
  20. ^ Jackson, Joab (2014年2月25日). “Microsoft TypeScript graduates to Visual Studio”. PC World. IDG. 2015年4月26日閲覧。
  21. ^ Turner, Jonathan (2014年7月21日). “New Compiler and Moving to GitHub”. TypeScript Language team blog. Microsoft. 2015年4月26日閲覧。
  22. ^ Bright, Peter (2016年9月22日). “TypeScript, Microsoft’s JavaScript for big applications, reaches version 2.0”. Ars Technica. Condé Nast. 2016年9月22日閲覧。
  23. ^ Anders Hejlsberg (2012年10月5日). “What is TypeScript and why with Anders Hejlsberg”. www.hanselminutes.com. 2014年1月15日閲覧。
  24. ^ S. Somasegar (2012年10月1日). “TypeScript: JavaScript Development at Application Scale”. msdn.com. 2013年11月27日閲覧。
  25. ^ http://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/
  26. ^ Angular 2”. 2016年5月4日閲覧。
  27. ^ Welcome to TypeScript”. typescriptlang.org. Microsoft. 2015年4月26日閲覧。
  28. ^ TypeScript Language Specification p.24
  29. ^ borisyankov/DefinitelyTyped”. GitHub. 2015年4月26日閲覧。
  30. ^ niutech/typescript-compile”. GitHub. 2015年4月26日閲覧。
  31. ^ The Most Intelligent Extension for Visual Studio :: ReSharper - C#, VB.NET, LINQ, ASP.NET, ASP.NET MVC, XAML, XML, JavaScript, HTML, build scripts. Best-of-breed tools for code refactoring, code quality analysis, code cleanup, navigation, code generation, unit testing, and code templates.
  32. ^ https://babeljs.io/

外部リンク[編集]