2017-05-06 45 views
1

在第与其他JavaScript库工作望着documentation,我没有料想到会看到两个进口:在Typescript中如何组合.d.ts文件和JavaScript文件?

  1. 第一个为.d.ts文件
  2. 第二实际实现的JavaScript文件。

然而,似乎只有.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 files声明实体var向我暗示,可能不仅仅是简单的类型信息被包含在其中。

回答

1

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

在问候你的问题 - 你参考node.d.ts为了给transpiler/IDE暗示什么urlpathfs等模块在node.js中 - 所以你得到的类型检查。实际url模块本身的进口无关与打字稿,并通过Node.js的按照完成其模块分辨率rules

编辑

宣言文件不会导致由打字稿发出任何代码编译器(link)。因此,根据定义的性质,从它们加载(导入)任何东西是不可能的。

+0

谢谢你的回答。我已经扩展到这个问题,要求进一步澄清我的误解。如果你可以解决这个问题,我可以将你的答案标记为正确的。 –

+0

我已经添加了一个链接和一个小的澄清 - 希望这可以帮助。 – Amid

相关问题