TypeScript

提供: miniwiki
移動先:案内検索
TypeScript
ファイル:TypeScript Logo.png
拡張子 .ts
パラダイム マルチパラダイム : スクリプトオブジェクト指向構造化命令型関数型ジェネリック
登場時期 2012年10月1日 (2012-10-01)[1]
設計者 マイクロソフト
開発者 マイクロソフト
最新リリース 2.9.2/ 2018年6月13日(6年前) (2018-06-13[2]
影響を受けた言語 JavaScript, Java, C#
影響を与えた言語 AtScript
ライセンス Apache License 2.0
ウェブサイト www.typescriptlang.org
テンプレートを表示

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

TypeScriptは大規模なアプリケーションの開発のために設計されている。

TypeScriptはJavaScriptのスーパーセットであるため、既存のJavaScriptプログラムは、全て有効なTypeScriptプログラムとなる。

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

TypeScriptの主要な実装は、自身もTypeScriptで書かれた、JavaScriptへのトランスコンパイラである。ライセンスはApache 2 License

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

歴史

TypeScriptはマイクロソフトで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]

2017年2月にTypeScript 2.2がリリースされて以降は、それまで不定期だったバージョンアップを2ヶ月に1回行うリリースサイクルが定められた[23]

背景

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

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と呼ばれているもの)のスーパーセットである[27]。従って、JavaScriptプログラムは有効なTypeScriptプログラムでもあるので、TypeScriptプログラムはJavaScriptを境目なしに利用できる。

デフォルト設定の場合、コンパイラはECMAScript 3を出力するが、オプションによりECMAScript 3から最新のECMAScriptまでの間で出力対象を選択することができる。

TypeScriptでは、既存のJavaScriptコードを使うことができる。つまり、人気のあるJavaScriptライブラリを取り入れることができ、他のJavaScriptからTypeScriptで作られたコードを呼ぶこともできる[28]。これらの外部ライブラリに対する型宣言は、DefinitelyTyped(後述)に収録されていればnpmを用いて簡単にインストールすることができる[29]

型アノーテーション

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

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

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

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

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

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

型宣言ファイル

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に対して行われた。

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

開発ツール

コンパイラ

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

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

TypeScriptで書いたコードをブラウザ上で実行するにはコンパイルが必要。 テンプレート:Syntaxhighlight

開発環境

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

関連項目

注釈

  1. TypeScript - Download: TypeScript 0.8.0
  2. Releases · Microsoft/TypeScript · GitHub”. . 2018閲覧.
  3. Microsoft takes the wraps off TypeScript, a superset of JavaScript | ZDNet
  4. TypeScript: JavaScript Development at Application Scale - Somasegar's blog - Site Home - MSDN Blogs
  5. Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? | ZDNet
  6. Microsoft Augments Javascript for Large-scale Development CIO.com
  7. borisyankov/DefinitelyTyped”. GitHub. . 26 April 2015閲覧.
  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日). . 26 April 2015閲覧.
  11. Turner, Jonathan (2014年4月2日). “Announcing TypeScript 1.0”. TypeScript Language team blog. Microsoft. . 26 April 2015閲覧.
  12. ミゲル・デ・イカザ (2012年10月1日). “TypeScript: First Impressions”. . 2012閲覧. “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閲覧. “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日). . 26 April 2015閲覧.
  15. TypeScript”. Eclipse Marketplace. Eclipse Foundation. . 26 April 2015閲覧.
  16. Hillar, Gastón (2013年5月14日). “Working with TypeScript in Visual Studio 2012”. Dr. Dobb's Journal. . 26 April 2015閲覧.
  17. TypeStrong: The only TypeScript package you will ever need”. . 21 July 2016閲覧.
  18. TypeScript 0.9 arrives with new compiler, support for generics”. The Register (2013年6月18日). . 26 April 2015閲覧.
  19. Hejlsberg, Anders (2014年4月2日). “TypeScript”. Channel 9. Microsoft. . 26 April 2015閲覧.
  20. Jackson, Joab (2014年2月25日). “Microsoft TypeScript graduates to Visual Studio”. PC World. IDG. . 26 April 2015閲覧.
  21. Turner, Jonathan (2014年7月21日). “New Compiler and Moving to GitHub”. TypeScript Language team blog. Microsoft. . 26 April 2015閲覧.
  22. Bright, Peter (2016年9月22日). “TypeScript, Microsoft’s JavaScript for big applications, reaches version 2.0”. Ars Technica. Condé Nast. . September 22, 2016閲覧.
  23. Daniel Rosenwasser (2017年3月27日). “TypeScript’s New Release Cadence”. . 2017閲覧.
  24. Anders Hejlsberg (2012年10月5日). “What is TypeScript and why with Anders Hejlsberg”. www.hanselminutes.com. . 2014閲覧.
  25. S. Somasegar (2012年10月1日). “TypeScript: JavaScript Development at Application Scale”. msdn.com. . 2013閲覧.
  26. http://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/
  27. Angular 2”. angular.io. . 2016閲覧.
  28. Welcome to TypeScript”. typescriptlang.org. Microsoft. . 26 April 2015閲覧.
  29. Consumption · TypeScript”. . 2017閲覧.
  30. TypeScript Language Specification p.24
  31. borisyankov/DefinitelyTyped”. GitHub. . 26 April 2015閲覧.
  32. niutech/typescript-compile”. GitHub. . 26 April 2015閲覧.
  33. 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.
  34. https://babeljs.io/

外部リンク

テンプレート:JavaScript