如何将.d.ts文件和javascript文件组合在Typescript中?

时间:2017-05-06 09:12:59

标签: typescript

查看使用其他JavaScript库部分中的documentation,我原本希望看到两个导入:

  1. .d.ts文件的第一个
  2. 第二个用于实际执行javascript文件。
  3. 然而,似乎只有.d.ts被导入,通过一个奇怪的注释引用,然后加载了在.d.ts文件中声明的URL。

    /// <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 files声明具有var的实体的事实告诉我,可能不仅仅是输入信息。

1 个答案:

答案 0 :(得分:1)

打字稿的主要目的之一是提供缺乏javascript的更强大的类型系统。这就是d.ts文件的用途 - 它们描述了&#34;内容&#34; javascript库,以便您的typescript转换器或IDE可以为您提供方便的类型检查等。编译打字稿应用程序时,所有类型信息都会丢失,并且您将纯javascript作为输出。

关于你的问题 - 你引用node.d.ts,以便给transpiler / IDE一个提示urlpathfs等模块在节点中的提示.js - 所以你得到了类型检查。导入实际的url模块本身与typescript无关,并由node.js根据其模块分辨率rules

完成。

修改

声明文件不会导致typescript编译器(link)发出的任何代码。因此,根据其定义的性质,不可能从它们加载(导入)任何东西。