web-dev-qa-db-ja.com

TypeScriptの背後にある動機は何ですか?

JavaScript、Flash、Silverlight、そしてHTML5がすべてを所有していました。

TypeScriptの背後にある動機は何ですか? TypeScriptではどのような問題に取り組み、どのような改善を実現しますか?

http://www.typescriptlang.org/

21
Gero

静的に型付けされたクラスベースの言語で、JavaScriptにコンパイルできるように思えます。それは良いアイディアであり、それは 他の人も持っていたものです

利点は、静的に型付けされたクラスベースの言語とJavaScriptの両方で開発された人には明らかです。

  • 何よりもまず、コンパイラーです。展開前にタイプミスや不注意によって引き起こされた明らかな正確性の問題をチェックできることは、ほとんどの開発者が彼らはウェブ開発をしなければならず、それからそれは突然彼らの足の下から引っ張られます。ブラウザーは、適切なテストとデバッグ機能を犠牲にしてブラウジングエクスペリエンスを快適にするように設計されています。標準ソリューションであるJSLintは、いくつかの明らかな正確性の問題をなくし、スタイルチェッカーの苦情をたくさん混ぜるので、実際のコンパイラーの代わりにはなりません。そのレポートで。実際のコンパイラーを持つことは大きな前進です。
  • そして同様の線に沿って、型システム。型システムは、コードを読みやすくし(たとえば、関数に渡されているもの、および関数の機能を正確に把握できます。たとえば、パラメーターリストを参照するだけで)、コンパイル時にある程度の正確さを強制することでコードを改善します。時間。 (特定のオブジェクトタイプを想定している場合、整数を渡すとエラーになります。JavaScriptを使用するとそれが可能になり、実行しようとするとエラーが発生します。型システムのコンパイラはそれをキャッチしてエラーを報告します君は。)

ご覧のとおり、基本的な考え方は非常に優れています。そうは言っても、私はその言語自体について何も言えないのです。しかし、私はSmart(上記にリンクされています)を使用しており、Web開発のための非常に強力で便利なツールであることがわかりました。

35
Mason Wheeler

私の知る限り、TypeScriptを使用する理由はいくつかあります。何よりもまず、メイソンウィーラーが言ったように、コンパイラ。または、コンパイラが行うすべてのチェック。 JSLintやその他のツールは便利ですが、いくつかの問題を見逃しており、明らかに間違っている場合があります。私は確かにこの「革新」を歓迎します。

次に、実際のタイプシステムがあり、読みやすさが向上し、正しいタイプが適用されます。結局のところ、これにより開発速度が向上します。

私にとって、すばらしいことの1つはtooling supportです。それはおそらく型システムの副作用ですが、それでも素晴らしいです。そして、本当に必要なのは、現在のJavaScriptツールのサポートは役に立たないからです。

TypeScriptはJavaScriptを拡張しようとします。コンパイラーは本当に素晴らしいJavaScriptを生成します。これに加えて、それは ECMAScript 6の提案 に従います。 (たとえば、 矢印関数構文パラメータのデフォルト値モジュール など。

モジュールとクラスでの作業を簡単にします。 JavaScriptでクラスとモジュールを操作することは実際に可能であり、非常に一般的ですが、ある程度のボイラープレートコードが必要です。そして、それを読むのは本当に簡単ではありません。 TypeScriptでは、JavaまたはC#のように、クラス、インターフェイス、およびモジュールのステートメントを記述できます。これは、私に尋ねるとはるかに簡単です。

しかし結局のところ、それはJavaScriptにすぎません。新しい言語や構文を学ぶ必要はありません。それが追加する唯一のことは、オプションの型システムです(これは素晴らしい、期限切れです)。

次に、「定義ライブラリ」があります。つまり、すべてのJavaScriptライブラリを使用できます書き換えたり、パッチを適用したりする必要はありません。しかし、今は追加の型システムがあります。

ぜひやってみます!

最後に、HTML5とTypeScriptの間に競合はありません。しかし、それは別の話です。

15
Bruno Schäpper

JavaScript、Flash、Silverlight、そしてHTML5がすべてを所有していました。

これは単にNOT trueです。 HTML5はそれらを所有していません。マルチメディアの使用を簡素化する新しいマークアップを導入し、(HTMLのレンダリング中にハードウェアアクセラレーションを使用するなど)新しい時代のブラウザーの利点を探求します。

TypeScriptの背後にある動機は何ですか?

動機はそれを使用する理由によって駆動されるかもしれません。 TypeScriptのすべての機能(静的チェック、シンボルベースのナビゲーション、ステートメントの完了、コードのリファクタリングなど)は、それを考慮する非常に強力な理由です。

さらに、堅牢なコンポーネントの構築に役立つクラス、モジュール、およびインターフェースを提供します。これらの機能は、開発時に信頼性の高いアプリケーション開発で使用できますが、単純なJavaScriptにコンパイルされます。

5
Yusubov

JSにコンパイルされるまったく新しい言語ではなく、JavaScript開発を管理するツールとして扱われる場合があります。 Dartのようなサーバー側の開発言語になりたくないし、CoffeeScriptのような別の構文も必要ありません。一般的な言語(およびコアライブラリ)を使用して、GWTやスクリプト#のようなJSにコンパイルすることは望んでいませんでした。 TypeScriptは、JSの次のバージョンで提案されている同じ「クラス」構文にも従います。

ほとんどのWeb開発は今日クライアント側でのみ実際のJavaScriptを使用して行われていると思います。 Dart、GWTなどの言語またはフレームワークは、これには適していません。 coffeescriptを使用すると、新しい構文が表示されます。そして、あなたはcoffeescriptとJSの両方を理解する必要があります。 TypeScriptはいくつかの追加の型指向機能を追加しているだけですが、JSに統合されているため、開発者は型固有のエラー(JSエラーの大部分)から解放され、開発ツールに開発者の意図に関する詳細情報を提供します。

このアプローチは新しいものではありません。の「静的タイピング」セクションに移動します

この記事では、クエリについて説明します http://www.eweek.com/developer/Microsoft-delivers-TypeScript-a-better-javascript-for-big-apps/

3
Gulshan

共有された信頼できないがらくた(JavaScript)を、実際のプロジェクトで実際に使用できる独自の言語に変える努力だと思います。

これはGWTと比較する必要があります。GWTは同様の目標を持っていますが、JavaScriptを言語の一部にしないことにより、よりクリーンなアプローチをとっています。また、JavaアプレットまたはFlashを使用します。これらは、ブラウザーに依存しない完全なランタイム環境を定義するという非常にクリーンなアプローチを採用しています。

あなたの意見はさまざまかもしれませんが、(変化する、一貫性のない)javascript実装とDOMモデルをネイティブで提供するブラウザーに依存している限り、それは運命にあると思います。

0
ddyer