typescriptを使用する必要がありますか?または私はES6を使用できますか?[閉まっている]


286

私の毎日の仕事は、AngularJSを使用するクライアント開発者です。TypeScriptを使用するかどうかを評価しています。私はtypescriptについていくつかの調査を行いましたが、必要なほぼすべてのJavaScriptパッケージには定義タイプファイルが必要です。特に何か新しいことを試してみたいと思っていて、定義が定義されていない場合は、あまり便利ではないことがわかりました。本当にイライラします。(typescript 1.5ベータ版を使用する場合、現在のjQuery定義でも問題が発生します)。ES6を検討し始めましたが、TypeScriptに似ています。代わりにES6を使用する必要がありますか?また、angular 2はTypeScriptを完全にサポートすることになると聞きました。


11
新しい何かのために毎回定義ファイルを必要としません。タイプなしのライブラリを使用したい場合はdeclare var MyNewLibraryName: any;、コンパイラに文句を言わずに自由に記述して使用できます。
David Sherret、2015年

2
この質問を締めくくる投票では、どちらが最善であるかを尋ねるのではなく、各アプローチに関連する賛否両論を尋ねることをお勧めします。このようにして、意見ではなく情報を求めています。
Brocco

typescriptは、すべての主要なブラウザーの前にjavascriptの新しいバージョンの機能を更新します。私のオプションは、typescriptを使用して、ターゲットブラウザーに基づいてjavascriptバージョンにコンパイルすることです。(もちろん、javascriptを1つのバージョンから別のバージョンにトランスパイルするのも簡単です)
bhv

コードを正しくlintできることに煩わされておらず、Immutable.jsを非常に扱いにくくしたい場合、そしてボイラープレートを書くのが大好きで、DRYが過大評価されていると思い、実際に繰り返すことを好む場合は、他の人のコードのタイプ定義を書いて楽しんだり、タイプが自分の下で変化するときにタイプを管理したり、適切に機能するものがないために2つの異なるテキストエディターを切り替えたりして、Typescriptを選択します。しかし、正気なら、ES6 / 7とBabelを選択してください。
巨大な

回答:


114

私は現在の角度のあるプロジェクトでTypescriptを約1年半使用していますが、定義に関する問題が時々ありますが、DefinitelyTypedプロジェクトは、最も人気のあるライブラリの最新バージョンに追いつくのに素晴らしい仕事をします。

ただし、バニラJavaScriptからTSへの移行には明確な学習曲線があり、移行を行うための自分とチームの能力を考慮する必要があります。また、angular 1.xを使用する場合、オンラインで見つけるほとんどの例では、JSからTSに変換する必要があり、現在、TSとangular 1.xを一緒に使用するためのリソースは多くありません。 。

Angular 2の使用を計画している場合、TSを使用した例がたくさんあり、チームはTSでほとんどのドキュメントを提供し続けると思いますが、Angle 2を使用するためにTSを使用する必要はありません。

ES6にはいくつかの優れた機能があり、私は個人的にはそれについて理解を深めるつもりですが、現時点ではそれを本番環境対応言語とは考えていません。主に、現在のブラウザーによるサポートの欠如が原因です。もちろん、ES6でコードを記述し、トランスパイラーを使用してそれをES5に到達させることもできます。これは、現在、一般的に行われていることのようです。

全体としては、答えはあなたとあなたのチームが快適に学べるものにあると思います。私は個人的にTSとES6の両方が優れたサポートと長い将来を持っていると思いますが、言語機能をより迅速に取得する傾向があるため、私はTSを好みます。


40
ES6はブラウザをサポートしていません?? あなたはMSの政治家ですか?typescriptとES6の両方にトランスパイラーが必要です。WebでTSまたはES6を実行しておらず、Babelのようなものを使用していることを意味します。Angular 2へのTSは、GoogleとMSの間の政治的結びつきのために追加されました
STEEL

40
@STEELいいえ、MSの政治家ではありません。ES6のサポートが非常に制限されていた1年以上前に私が残した回答にあなたはただ答えています。そして、TSとAngular 2の決定は政治的であると自由に考えることができますが、それがその言語用に作成されたものであり、Angular2チームがその使用を奨励しているという私の意見は変わりません。
ケントクーパー

18
これは2年前のものですが、標準が最終的に普及するまでの時間を示しています。ES6は、現在ほとんどのブラウザーでネイティブに大幅にサポートされています。クラス、矢印関数など。最終的に、ブラウザーがトランスパイラーを不要にするのに十分なバージョンのJavaScriptをネイティブでサポートするようになります。Typescriptは常にトランスパイラを必要とします。何でこれが大切ですか?ウェブを前進させることはウェブ開発者としての私たちの義務であり、それは標準をサポートすることによるものです
monzonj

3
ES6は実際の「コンパイル時」のタイプセーフをサポートしていません。ES6には多くの優れた機能がありますが、「この引数は文字列(またはクラスXのインスタンス)である」とは言えず、ビルドプロセスの一部として検証することはできません。大きなプログラム(フロントエンドとバックエンドの両方)。
Brad Peabody

本当に必要な場合は、フロータイプなどのツールを使用して、ES6にタイプサポートを追加できます。ES6がすべてのブラウザーでユビキタスになるまで、ツールチェーンはFlow-> ES6-> Babelで構成されます。これは多くの間接参照ですが、その仕事をしており、現在非常に人気のあるチェーンだと思います。
Prahlad Yeri

660

ES5、ES6、TypeScript間のディシジョンツリー

ビルドステップがあってもよろしいですか?

  • はい-ES5を使用します
  • いいえ-続けます

タイプを使用しますか?

  • はい-TypeScriptを使用します
  • いいえ-ES6を使用します

もっと詳しく

ES5は、あなたが知っていて今日のブラウザーで使用しているJavaScriptであり、現在のブラウザーで実行するものに変換するためのビルドステップを必要としません。

ES6ES2015とも呼ばれます)はJavaScriptの次のバージョンですが、現在のブラウザーでは実行できません。ブラウザで実行するためにES5をエクスポートするトランスパイラはかなりあります。それはまだ動的な(read:untyped)言語です。

TypeScriptは、JavaScriptの将来のバージョン(ES6およびES7)の機能を利用しながら、オプションのタイピングシステムを提供します。

注:多くのトランスパイラー(つまり、babel、TypeScript)を使用すると、今日のJavaScriptの将来のバージョンの機能を使用したり、現在のブラウザーで引き続き実行されるコードをエクスポートしたりできます。


5
それはそれほど単純ではありません。他にもたくさんの要素があります。
RaoulRubin 2016

16
ここで真である@RaoulRubin、他の多くの要因がありますが、閉じられた質問に対しては、少なくとも意思決定プロセスの開始地面を提供
Brocco

1
PS-ES6 + FlowType = Love :)
Red2678

3
@RavinderPayalには興味深い質問があります、Brocco。市場の観点から、何であるそれらの線に沿ってES5またはES6とか対TSの値は?
J.ウェルズ2016年

3
わかりましたので、この投稿は数年前です。2017年9月28日まで早送りしましょう。ほとんどのブラウザーはES6をサポートしていますか?
Dewey Banks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.