2016-03-01 3 views
5

Angular 2 Quickstartを読んで、私はTypeScript Configurationの下で、このセクションに出くわした:なぜ入力ツールは意図的に入力の重複セットを作成しますか?

タイピングファイルの衝突

は、活字体のコンパイラは、タイプの再定義を許しません。 の例では、 Promiseタイプの2つの定義が指定されている場合、エラーをスローします。

二重定義が一般的です。実際には、タイピングツールは意図的に (の別の場所で説明されている理由で)の重複したセットを作成します。

typings 
    browser 
    ambient 
     es6-shim 
     es6-shim.d.ts 
    main 
    ambient 
     es6-shim 
     es6-shim.d.ts 
    browser.d.ts 
    main.d.ts 

ES6-シムタイピングが重複しているとbrowser.d.tsとmain.d.ts を持っている:私たちは何かを見つける必要があり タイピングフォルダのプロジェクト構造に見えます重複するコンテンツ。

私はtypings readmeを読めば、それは言う:

あなたはあなたがタイピング/ browser.d.tsを使用することをお勧めしますフロントエンドパッケージを構築している場合。ブラウザの入力は、ブラウザのフィールドの上書きに従ってコンパイルされます。

質問

なぜtypings toolは故意タイピングの複製セットを作成していますか?

なぜフロントエンドパッケージにtypings/browser.d.tsを使用することをお勧めしますか?

browserフィールドをサポートすると、異なるタイプが作成される可能性があります。

フィールドがある場合、browserフィールドはどのような方法でタイピングを変更しますか?

答えて

4

あなたの推測は正しいです。 Typingsは、パッケージがブラウザや他の場所で異なって機能することを認識しています。同形のJSは流行りであり、多くのパッケージがすべてのJS環境で同じように機能するため、この機能はほとんどの一般的なパッケージでは不要です。

しかし、私のコードが意図的に機能のために環境をチェックしていた場合や、ブラウザで機能していない機能をユーザーが使用しないようにしたい場合は、役立つでしょう。

例を示します。私はカラーピッカーパッケージを持っています。このパッケージは、デスクトップ上にあれば、画面上のどこからでも色を選ぶことができます。明らかに、これはシステムレベルのAPIに依存しており、ブラウザでは使用できません。一方、私のブラウザブラウザウィンドウ内の色を選ぶことができます。まったく新しいパッケージをリリースするのではなく、プログラマーにさまざまなタイプを公開して、環境に基づいてどの機能が許可されているかを知ることができます。

究極的には、(マシン上のファイルスペース以外の)コストと、それ以外の方法では不可能な機能があります。

+0

したがって、 'main'フォルダにはノードの定義が含まれていますか? – lbrahim

+1

@Ibrahimノードは主にJSベースの環境ですが、 :)ただブラウザではありません。 – Harangue

関連する問題