TypeScript開発者インタビュー

TypeScriptは、JavaScriptにコンパイルされる比較的新しいプログラミング言語です。 その主な利点は、コンパイル時のクラスと型チェックです。 TypeScriptコンパイラはオープンソースであり、開発はMicrosoftが後援しています。



ただし、言語とコンパイラの両方はまだ若く、実際のプロジェクトで使用した経験のある人はほとんどいません。 実際のプロジェクトで新しい開発ツールを試す機会はほとんどありません。失敗のリスクが大きすぎるため、ほとんどの顧客はそれを行いません。



「戦闘」条件で偶然それをテストした人々に会うことは、いっそう楽しいです。 TypeScriptレポートエディターを作成した2人の男と話をすることができました。







あなたは誰ですか? 自己紹介してください。



マイケル:こんにちは! 私の名前はマイケルです。 私はDX( Developer Express Inc.のTulaオフィス-約Interviewer )で14年間働いています。 私はDelphi(VCL)から始め、C#( eXpressAppFramework )があり、3年前からJavaScript / TypeScriptで積極的に書いています。 まず、私がチームリーダーの1人であったDevExtremeチームで、昨年からWeb Report Designerを開発しています。



セルゲイ:私の名前はセルゲイです。 私はトゥーラ州立大学で教え、大企業のIT部門で働いていましたが、今ではほぼ6年間DXで働いています。 彼はC / C ++(MS Visual Studio、C ++ Builder)で始まり、DXでeXpressApp Frameworkプロジェクト、DevExtremeチームで働き、現在はXtraReports Suiteの HTMLデザイナーで働いています。



あなたのチームには誰がいますか? 彼らはどうやって生まれたのですか?



マイケル:当初、私たちのチームは、私、DevExtremeの別の開発者、およびレポートチームの開発者で構成されていました。 歴史的に、DXは主にVCL、.NET、およびASP.NETコンポーネントに強いと言わなければなりません。 しかし、私たちは将来について楽観的であり、現代のプログラミングの流れに遅れをとりたくありません。これはもちろん、HTML5とそれに関連するすべてのものです。 しかし、私も予約をします。主にC#プログラマーが私たちのために働いています。 次に、この不均衡を少し変更したいと思います。



Sergey:私は「DevExtremeの別の開発者」です:私はそこでフレームデザイナーのためにフォームデザイナー、Visual StudioおよびPhoneGapコンテナーとの統合に従事していました。



どのようにTypeScriptを使用することにしましたか?



Michael: RIT ++ 2012カンファレンスでTypeScriptについて聞いたのですが、それは最初のバージョンの1つでした。 率直に言って、それは湿っていて、将来のバージョンで登場するものは多くありませんでした。 それにもかかわらず、私は小さなサンドボックスプロジェクトでそれを試してみましたが、結果は気に入りました。



Sergey: DevExtremeフレームワークはJavaScriptで記述されており、MS Visual Studioのプロジェクトテンプレートも最初はJavaScriptのみでした。 しかし、2013年に、一部のユーザーから、フレームワークとTypeScriptプロジェクトテンプレート用の.d.ts定義ファイルの作成が求められ始めました。 TypeScriptをサポートし、強力なタイピングとインテリジェンスを得て、クライアントがフレームワークに「入る」のに非常に役立ちました。 クライアントプロジェクトでのコードの見え方が気に入りました。 その後、私たちはTypeScriptを使用したいと考えました。







他のソリューション、たとえばCoffeeScriptを使用しなかったのはなぜですか?



Michael: TypeScriptを選んだ主な理由は次のとおりです。

  1. C#構文に近い。
  2. Visual Studioとの良好な統合。 これはかなり純粋に私たちの利点です。前述したように、私たちはすべてC#プログラマであり、これは自動的に「視覚」の下で手を研ぐことを意味します。
  3. 言語に存在する多くのものがまもなくEcmaScript6に入るか、すでに入っています。 コンパイル後のJSコードは、TypeScriptコードの場合と非常によく似ています( イノベーションの小さなレビュー: https : //github.com/lukehoban/es6features-インタビューからのメモ )。
  4. かなり柔軟なタイピングシステムとJavaScriptとの完全な互換性。 言い換えれば、システムのどの部分に入力するか、しないのかを選択できます。これにより、同じC#では利用できない非常に柔軟な決定を行うことができます。
  5. Microsoftスタック。


CoffeeScriptについて。 私が見たところから、これはTypeScriptの良い代替品です。 しかし現在、CoffeeScriptでは、それに比べて大きな利点は見当たりません。 また、TypeScriptコードベースをEcmaScript 6に簡単に変換できる場合、CoffeScriptプロジェクトで同じことを行うのははるかに困難になると思います。



Sergey:最初は、JavaScriptのすべてのラッパーに懐疑的でした。 私にとって、TypeScriptは簡単に入力できるように思えました。 おそらく、構文がC#に近いため、TypeScriptコードでJavaScriptコードのフラグメントを使用する可能性、翻訳結果がプログラムのソースコードに近いため、コードが他の場所で使用されている場合でもマップファイルがなくてもデバッグできます。 そして、もちろん、タイピング、インテリジェンス、クイックコードジャンプは、大規模なプロジェクトでの作業に役立ちます。



EcmaScript6標準のリリースと広範な実装でTypeScriptを放棄することを検討していることを正しく理解しましたか?



Sergey:既存のプロジェクトを書き換えることは意味がないと思いますが、Visual Studioがエディターでインテリジェンスとタイプチェックを提供する場合、JavaScript EcmaScript6を使用して新しいプロジェクトをすぐに開始します。 私はすでにこれらのグッズに慣れており、拒否したくありません。



TypeScriptがMicrosoft開発ツールスタックに統合されていることの利点は何ですか?



マイケル:私たちの顧客のほとんどは、Microsoftスタックに「座っている」開発者です。 そして、もし彼らが何かを使うなら、これはMicrosoftが推奨し、促進するものであり、TypeScriptは条件付きでそれから自由であり、私たちは顧客をよりよく理解するためにそれを試さなければなりませんでした。



Sergey: TypeScriptの使用は簡単です-Visual Studio Express Editionにもインストールされます。 TypeScriptファイルをプロジェクトに追加するだけで作成できます。他の設定は不要です。 興味のために、私はTypeScriptをSublimeにねじ込みました-あなたはそのように働くことができます。



どのような困難を克服しなければなりませんでしたか?



Michael:実際、TypeScriptで大きな問題は発生していません。 おそらく、プロジェクト構造(何、どこ、どのようにすべきか)を開発している間、最初にだけです。 しかし、これは原則によるものです:すべてが一度初めて起こる。



Sergey:数週間TypeScript構文に慣れました。手でJavaScriptまたはC#コードを入力しました。



アプリケーションをデバッグおよびプロファイルする方法



Michael:デバッグでは、複合アプローチを使用しました。 つまり、組版-基本的に、便利なようにChromeで見ました。 また、そこでデバッグされました。 マップファイルのおかげで、すべてが非常に有機的に行われ、JavaScriptではなくTypeScriptで作業していることに気付かないでしょう。 唯一のことは、ソースの更新に問題がある場合があることです。 コードを再生成するには、より頻繁に保存する必要があります。 Microsoftの功績は、バージョン0.9以降の非常に高速なコンパイラに起因すると考えられます。



Sergey: Chromeでアプリケーションをデバッグしています。IE+ VisualStudioでテストをデバッグする方が便利だと思います。1行戻るか、数行先にジャンプできます。 Chromeではありますが、警官を再起動することもできます。 Chromeでデバッグする場合、マップファイルが大きくならない場合があります(最も必要なときだけ)が、結果のJavaScriptコードが読みやすいため、特別な問題は発生しません。



コードをどのようにテストしますか? テストを作成しますか?



Michael:当社では、TDDは必須のコード開発方法論です。 したがって、すべてがTest First-methodologyに従って記述されており、Knockoutにクレジットを与える必要があります-これはこの点で非常に役立ちます。 つまり まず、組版が記述され、次にビューモデルのインターフェイスを決定するバインディングが取得されます。 次に、このビューモデルのテストを作成します。 要するにそのようなものです。 単体テストフレームワークとして...ここには驚くことはありません。QUnitを使用しました。 DXには継続的な統合(自転車なし)がありますが、問題もありませんでした。



セルゲイ: QUnit +“ qunit.TypeScript.DefinitelyTyped”



Visual Studioの拡張機能を使用していますか?



Michael: Web Essentialsを使用しました。これは、HTML5、JavaScriptを使用して何かを書く人にとって事実上の標準であるように思えます。



フレームワークを使用していますか? TypeScriptとどのように統合しますか?



Michael:しかし、jQueryがない場合:)はい、もちろん、多くのサードパーティのTSライブラリを使用しました。その説明は、TypeScript.DefinitelyTypedキーワードを使用してNugetパッケージマネージャーで問題なく見つけることができます。



Sergey: Knockout.js、Globalize、WebApp.js。 Visual Studioギャラリーにないサードパーティライブラリの定義は、通常GitHubにあります。 たとえば、一般的なコントロール(select2など)の定義は既にあります。 まだ見つけていない場合は、必要なd.tsファイルを自分で作成するか、本当に怠けている場合はanyに添付してください。



製品をどのようにローカライズしましたか?



Sergey: 「Globalize.js」を使用:パッケージ「globalize.TypeScript.DefinitelyTyped」をnugetプロジェクトに追加しました-それだけです。



TypeScriptでプロジェクトを作成することに決めた人に、どのようなアドバイスを与えることができますか?



マイケル:書いて。 あなたはそれを好きになるでしょう。



セルゲイ:試して、比較してください。 ネットワークには、ほぼすべての質問に対する答えがあります。



All Articles