查看使用其他JavaScript库部分中的documentation,我原本希望看到两个导入:
.d.ts
文件的第一个然而,似乎只有.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
的实体的事实告诉我,可能不仅仅是输入信息。
答案 0 :(得分:1)
打字稿的主要目的之一是提供缺乏javascript的更强大的类型系统。这就是d.ts文件的用途 - 它们描述了&#34;内容&#34; javascript库,以便您的typescript转换器或IDE可以为您提供方便的类型检查等。编译打字稿应用程序时,所有类型信息都会丢失,并且您将纯javascript作为输出。
关于你的问题 - 你引用node.d.ts,以便给transpiler / IDE一个提示url
,path
,fs
等模块在节点中的提示.js - 所以你得到了类型检查。导入实际的url
模块本身与typescript无关,并由node.js根据其模块分辨率rules
修改
声明文件不会导致typescript编译器(link)发出的任何代码。因此,根据其定义的性质,不可能从它们加载(导入)任何东西。