2017-05-06 5 views
1

他のJavaScriptライブラリでの作業セクションdocumentationを見て、私は2つの輸入が見込まれているでしょう:.d.tsファイルとjavascriptファイルはどのようにTypescriptで結合されていますか?

  1. 最初のJavaScriptファイルの実際の実装のための.d.tsファイル
  2. 秒を。

しかしそれだけで.d.tsは奇妙なコメント参照することにより、インポートされた後、URLが.d.tsファイル内で宣言されているロードされていることが表示されます。

/// <reference path="node.d.ts"/> 
import * as URL from "url"; 
let myUrl = URL.parse("http://www.typescriptlang.org"); 

これは実際どのように機能しますか?おそらく、私は.d.tsファイルからの実装への参照を見ることを期待していたかもしれませんが、どちらも見えません。いくつかの魔法が関与していますか?

編集:説明のためにさらにリクエストしてください。

上記のimport *行は、.d.tsファイルから直接ロードされないことを確認してください。ファイルの最初の行が次のとおりであることを考えると、混乱します。

declare module "url" { 

これは、モジュールがロードされている場所であることを示しています。 reference行が、.d.tsファイルを示すためのパスを示し、次にimport行がこのファイルからタイプ情報をロードしていると考えていました。

some .d.ts filesvarというエンティティを宣言しているという事実は、単に型情報以外の情報が含まれている可能性があることを私に示唆しています。

答えて

1

JavaScriptの主な目的は、JavaScriptが不足しているより強力なタイプのシステムを提供することです。これはd.tsファイルのためのもので、javascriptライブラリの "内容"を記述して、あなたのtypescript transpilerやIDEが便利なtypechecksなどを提供できるようにします。 typescriptアプリケーションをコンパイルすると、すべてのタイプ情報が失われ、出力として純粋なjavascriptが作成されます。あなたの質問に関しては

- あなたはtranspiler/IDEに何urlpathfsなどのモジュールヒントを与えるためにnode.d.tsを参照するには、Node.jsのである - ので、あなたは型チェックを取得します。実際urlモジュール自体のインポートはtypescriptですとは何の関係もありませんし、rules

EDIT

宣言ファイルはtypescriptですから放出されたどのコードにはなりません。そのモジュールの解像度に応じてのNode.jsによって行われますコンパイラ(link)。したがって、その定義の性質によって、それらから何かをロード(インポート)することは不可能です。

+0

ありがとうございます。私は私の誤解をさらに明確にすることを求める質問に拡大しました。あなたがこれに対処することができれば、あなたの答えを正しいものとしてマークすることができます。 –

+0

私はリンクと小さな明確化を追加しました - これが役立つことを願っています。 – Amid

関連する問題