查看部分中的文档>与其他JavaScript库一起工作,我希望看到两个导入:
-
.d.ts
文件的第一个 - 实际实现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
行加载了此文件的类型信息。
某些.d.ts
文件用var
声明实体向我提出的事实,可能不仅仅包含信息。
打字稿的主要目的之一是提供JavaScript中缺少更强的类型系统。这就是D.TS文件的目的 - 他们描述了JavaScript库的"内容",以便您的打字稿转板或IDE可以为您提供方便的Typechecks等。当您编译打字稿应用程序时,所有类型的信息都会丢失,并且您将纯JavaScript作为输出。
关于您的问题 - 您参考Node.d.ts,以便给出transpiler/ide提示url
,path
,fs
等。模块在node.js中 - 因此您可以获得类型检查。实际url
模块的导入本身与Typescript无关,并且由Node.js根据其模块分辨率规则
编辑
声明文件不会导致 typescript Compiler(链接(发出的任何代码。因此,通过其定义的性质,不可能从它们中加载(导入(任何东西。